Go面试看这里了~(十八)

Go面试看这里了~(十八),第1张

原文地址: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总共命令是没多少,但是把每个指令研究透了那也是需要耗费很大的力气的,所以只要日拱一卒,最终一定会功不唐捐。

至此,本次分享就结束了,后期会慢慢补充。

以上仅为个人观点,不一定准确,能帮到各位那是最好的。

好啦,到这里本文就结束了,喜欢的话就来个三连击吧。

扫码关注公众号,获取更多优质内容。

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/995234.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存