原文地址:Go面试看这里了~(十八)
1、HTTP是否可以一次连接多次请求?
HTTP 1.1可以支持多个请求,HTTP 1.0只能支持单个请求。
2、Linux常用命令相关?
【lsof -i:端口号(如8080)】:查看该端口是否被占用。
【netstat -ntlp】:查看当前所有tcp端口。
【netstat -ntulp |grep 80】:查看所有80端口使用情况。
【netstat -an | grep 3306】:查看所有3306端口使用情况。
netstat参数说明如下:
-t (tcp) 仅显示tcp相关选项。
-u (udp)仅显示udp相关选项。
-n 拒绝显示别名,能显示数字的全部转化为数字。
-l 仅列出在Listen(监听)的服务状态。
-p 显示建立相关链接的程序名。
网上找了几个netstat指令常用的方式来简单看下怎么应用。
查看当前所有tcp端口:
(bert) [dev@new bert]$ netstat -ntlp
(No info could be read for "-p": geteuid()=1001 but you should be root.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8219 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:9500 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:8700 0.0.0.0:* LISTEN -
1、0.0.0.0代表本机上可用的任意地址。比如0.0.0.0:135 表示本机上所有地址的135端口,这样多ip计算机就不用重复显示了。
2、TCP 0.0.0.0:80表示在所有的可用接口上监听TCP80端口
3、0.0.0.0为默认路由,即要到达不再路由表里面的网段的包都走0.0.0.0这条规则
4、127.0.0.1表示你本机ip地址的意思。
5、[::]:21表示ipv6的21号端口的意思。
6、UDP的外部链接都是*:*的原因:*:*是网址的通配符,就是192.168.15.12,这个类型的整体描述。
查看所有9002端口使用情况:
(bert) [dev@new bert]$ netstat -ntlp | grep 9002
(No info could be read for "-p": geteuid()=1001 but you should be root.)
tcp 0 0 0.0.0.0:9002 0.0.0.0:* LISTEN -
(bert) [dev@new bert]$
查看本机路由:
(bert) [dev@new bert]$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.11.1.254 0.0.0.0 UG 0 0 0 em1
10.0.0.0 10.11.1.254 255.0.0.0 UG 0 0 0 em1
10.9.2.0 10.11.3.254 255.255.255.0 UG 0 0 0 em2
10.11.0.0 0.0.0.0 255.255.254.0 U 0 0 0 em1
10.11.2.0 0.0.0.0 255.255.254.0 U 0 0 0 em2
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 em1
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 em2
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.0.0 10.11.1.254 255.255.0.0 UG 0 0 0 em1
【top】:查看内存使用情况,输出内容如下:
上述图片中参数说明如下:
top -:系统当前时间。
up:系统已开机多长时间。
user:当前用户数。
load average:cpu平均负载,三个数值分别为:1、5、15分钟。
Task:系统当前进程数。
total:总进程数。
running:正在运行的进程数。
sleeping:睡眠的进程数。
stopped:停止的进程数。
zombie:僵尸进程数。
%Cpu(s):cpu使用率。
us:用户使用cpu百分百。
sy:系统内核使用cpu百分百。
id:剩余的cpu百分百。
Mem:内存使用信息。
total:总内存大小。
free:空闲的内存。
used:已使用的内存。
buff/cache:缓存的内存大小。
Swap:虚拟内存信息。
图片最下面一行表头参数解释如下:
PID:进程描述符 。
USER:进程的拥有者 。
PRI:进程的优先级 。
NI:nice level。
SIZE:进程拥有的内存(包括code segment + data segment + stack segment) 。
RSS:物理内存使用。
VIRT(virtul memory usage):进程需要的虚拟内存大小。
RES(resident memory usage):常驻内存 。
SHARE:和其他进程共享的物理内存空间 。
STAT:进程的状态,有 S=sleeping,R=running,T=stopped or traced,D=interruptible sleep(不可中断的睡眠状态),Z=zombie。
%CPU:CPU使用率 。
%MEM:物理内存的使用。
TIME:进程占用的总共cpu时间 。
COMMAND:进程的命令。
top指令常用参数说明如下:
s:改变画面更新频率。
l:关闭或开启第一部分第一行 top 信息的表示。
t:关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示。
m:关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示。
N:以 PID 的大小的顺序排列表示进程列表。
P:以 CPU 占用率大小的顺序排列进程列表。
M:以内存占用率大小的顺序排列进程列表。
h:显示帮助。
n:设置在进程列表所显示进程的数量。
q:退出 top。
s:改变画面更新周期。
top常用交互指令:
Ctrl+L:擦除并且重写屏幕。
k:终止一个进程,系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。
i:忽略闲置和僵死进程,是一个开关式命令。
q:退出程序。
r:重新安排一个进程的优先级别,系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值,输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权,默认值是10 。
S:切换到累计模式。
f/F:从当前显示中添加或者删除项目。
o/O:改变显示项目的顺序 。
l:切换显示平均负载和启动时间信息 。
m:切换显示内存信息 。
t:切换显示进程和CPU状态信息。
c:切换显示命令名称和完整命令行。
M:根据驻留内存大小进行排序。
P:根据CPU使用百分比大小进行。
还有几个查看CPU相关信息的指令使用,如下:
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
# 查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
3、Linux如下向一个进程发送信号?
Linux/Unix中向一个进程发送信号用kill命令,可以发送各种信号给进程,常用的杀死进程方式只是用到其中一个SIGKILL信号,kill命令的格式如下:
kill 信号参数 进程PID,常见信号参数如下:
-1:代表SIGHUP信号,作用类似重新启动进程。
-2:代表SIGINT信号,相当于在命令行输入Ctrl+C组合键中断进程运行。
-9:代表SIGKILL信号,代表强制中断进程。
-15:代表SIGTERM信号,表示正常终止进程。
-17:代表SIGSTOP信号,相当于在终端输入Ctrl+Z组合键来暂停进程运行。
网上找完资料一看,Linux总共命令是没多少,但是把每个指令研究透了那也是需要耗费很大的力气的,所以只要日拱一卒,最终一定会功不唐捐。
至此,本次分享就结束了,后期会慢慢补充。
以上仅为个人观点,不一定准确,能帮到各位那是最好的。
好啦,到这里本文就结束了,喜欢的话就来个三连击吧。
扫码关注公众号,获取更多优质内容。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)