今天来讲一个小编实际遇到过的一个面试题,涉及知识点如下: 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
你点的每个赞,我都认真当成了喜欢