每日一题:如何查看端口占用及相关命令介绍

2020-08-21 19:52:46 浏览数 (1)

今天来讲一个小编实际遇到过的一个面试题,涉及知识点如下: 1、如何查看端口占用情况? 2、如果根据进程号杀死进程? 3、kill 命令详解?-9 有什么作用

实际面试题讲解

面试题回答

首页来解答第一个问题:如何查看端口占用情况,常见的命令有:

代码语言:javascript复制
ps aux | grep 端口号
lsof -i:端口号
netstat | grep 端口号

接着来说下第二个问题:如何根据进程号杀死进程?命令如下:

代码语言:javascript复制
kill -9 进程号

最后第三个问题,kill 命令中的 -9 有什么作用?答案要点如下: 1、当执行 kill 命令时,实际上是发送一个信号给操作系统,这里的 9 就是一个信号,它表示强制进程立刻停止运行。程序不能忽略此信号,而未保存的进度将会丢失。 2、我们还可以使用 kill -l 命令查看可使用的信号

知识点分析

首页我们先来说下 kill 命令,当我们执行 kill 命令时,实际上是发送一个信号给操作系统。kill 命令格式:

代码语言:javascript复制
kill [信号] PIDs
[]表示可选

我们使用:

代码语言:javascript复制
kill -l

可以列出所有可使用用的信号列表,我们重点要掌握 SIGTERM (15) 和 SIGKILL (9) 这两个信号即可。这两个信号表示含义如下:

SIGTERM (15):它请求当前进程停止运行,但它是可以被忽略的,也就是说它有时间来保存进程并释放资源,简单来说,进程不是被强制停止的,是以一种较为优雅的方式关闭掉的。它是 kill 命令默认的信号,即当我们不传参数时

SIGKILL (9):显然,它是与上面那个信号相反的,它是不能被忽略的,会强制进程关闭。

需要注意的是,我们既可以使用 SIGKILL 这种规定的字符来操作命令,也可以使用数字。即下面两个命令是等价的:

代码语言:javascript复制
kill SIGKILL 进程号
kill -9 进程号

其他常见的几种信号如下:

信号符号

对应数字

含义

HUB

1

终端断线

INT

2

中断(同 Ctrl C)

QUIT

3

退出(同 Ctrl )

TERM

15

终止

KILL

9

强制终止

CONT

18

继续(与 STOP 相反,fg/bg命令)

STOP

19

暂停(同 Ctrl Z)

由上面我们知道,kill 命令需要接一个进程号,那什么命令可以看到进程号呢?通常 kill 命令会搭配 ps 命令。下面我们来简单说下 ps 命令。

ps 是进程查看器命令,它是 Process Status(并非 PhotoShop)的简称,ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令

需要注意的是:ps 命令是当前那个时刻进程状态的快照,并不是实时的,如果想要实时的,可使用 top 命令。

linux上进程有5种状态(重点,也是面试考点):

运行(正在运行或在运行队列中等待) 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) 停止(进程收到SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU信号后停止运行运行)

ps工具标识进程的5种状态码:

D 不可中断 uninterruptible sleep (usually IO) R 运行 runnable (on run queue) S 中断 sleeping T 停止 traced or stopped Z 僵死 a defunct (”zombie”) process

ps 可以接受很多参数,我们常用的有:

代码语言:javascript复制
ps -ef
ps aux
通常还会搭配 grep 命令来使用

对于 ps 命令详细介绍,可参考:https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/ps.html

你点的每个赞,我都认真当成了喜欢

0 人点赞