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

161 篇文章 12 订阅

原文地址: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参数说明如下:

  1. -t (tcp) 仅显示tcp相关选项。

  2. -u (udp)仅显示udp相关选项。

  3. -n 拒绝显示别名,能显示数字的全部转化为数字。

  4. -l 仅列出在Listen(监听)的服务状态。

  5. -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】:查看内存使用情况,输出内容如下:

上述图片中参数说明如下:

  1. top -:系统当前时间。

  2. up:系统已开机多长时间。

  3. user:当前用户数。

  4. load average:cpu平均负载,三个数值分别为:1、5、15分钟。

  5. Task:系统当前进程数。

  6. total:总进程数。

  7. running:正在运行的进程数。

  8. sleeping:睡眠的进程数。

  9. stopped:停止的进程数。

  10. zombie:僵尸进程数。

  11. %Cpu(s):cpu使用率。

  12. us:用户使用cpu百分百。

  13. sy:系统内核使用cpu百分百。

  14. id:剩余的cpu百分百。

  15. Mem:内存使用信息。

  16. total:总内存大小。

  17. free:空闲的内存。

  18. used:已使用的内存。

  19. buff/cache:缓存的内存大小。

  20. Swap:虚拟内存信息。

图片最下面一行表头参数解释如下:

  1. PID:进程描述符 。

  2. USER:进程的拥有者 。

  3. PRI:进程的优先级 。

  4. NI:nice level。

  5. SIZE:进程拥有的内存(包括code segment + data segment + stack segment) 。

  6. RSS:物理内存使用。

  7. VIRT(virtul memory usage):进程需要的虚拟内存大小。

  8. RES(resident memory usage):常驻内存 。

  9. SHARE:和其他进程共享的物理内存空间 。

  10. STAT:进程的状态,有 S=sleeping,R=running,T=stopped or traced,D=interruptible sleep(不可中断的睡眠状态),Z=zombie。 

  11. %CPU:CPU使用率 。

  12. %MEM:物理内存的使用。

  13. TIME:进程占用的总共cpu时间 。

  14. COMMAND:进程的命令。

top指令常用参数说明如下:

  1. s:改变画面更新频率。

  2. l:关闭或开启第一部分第一行 top 信息的表示。

  3. t:关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示。

  4. m:关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示。

  5. N:以 PID 的大小的顺序排列表示进程列表。

  6. P:以 CPU 占用率大小的顺序排列进程列表。

  7. M:以内存占用率大小的顺序排列进程列表。

  8. h:显示帮助。

  9. n:设置在进程列表所显示进程的数量。

  10. q:退出 top。

  11. s:改变画面更新周期。

top常用交互指令:

  1. Ctrl+L:擦除并且重写屏幕。

  2. k:终止一个进程,系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。

  3. i:忽略闲置和僵死进程,是一个开关式命令。

  4. q:退出程序。

  5. r:重新安排一个进程的优先级别,系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值,输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权,默认值是10 。

  6. S:切换到累计模式。

  7. f/F:从当前显示中添加或者删除项目。

  8. o/O:改变显示项目的顺序 。

  9. l:切换显示平均负载和启动时间信息 。

  10. m:切换显示内存信息 。

  11. t:切换显示进程和CPU状态信息。

  12. c:切换显示命令名称和完整命令行。

  13. M:根据驻留内存大小进行排序。 

  14. 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. -1:代表SIGHUP信号,作用类似重新启动进程。

  2. -2:代表SIGINT信号,相当于在命令行输入Ctrl+C组合键中断进程运行。

  3. -9:代表SIGKILL信号,代表强制中断进程。

  4. -15:代表SIGTERM信号,表示正常终止进程。

  5. -17:代表SIGSTOP信号,相当于在终端输入Ctrl+Z组合键来暂停进程运行。

网上找完资料一看,Linux总共命令是没多少,但是把每个指令研究透了那也是需要耗费很大的力气的,所以只要日拱一卒,最终一定会功不唐捐。

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

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

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

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

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luyaran

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值