www. On IT Road .com

终止进程

有时我们可能需要终止不需要的进程。
一个进程可能进入了一个无限循环,或者它可能挂了。
我们可以终止或者停止我们拥有的任何进程。
我们可以使用以下两个命令来终止一个或者多个进程:

  • kill
  • pkill

kill 和 pkill 命令向进程发送信号,指示它们终止。
每个信号都有一个编号、名称和相关联的事件。
以下是一些最常用的信号及其功能。

编号信号名说明
1SIGHUP重新加载配置文件
2SoirNT键盘中断 (ctrl+c)
9SIGKILL杀死进程
15SIGTERM立即结束进程。 (以受控方式终止进程,以便进行清理)
18SIGCONT继续使用 STOP 停止的过程
19STOP停止进程

注意:但是,有些进程不应终止,例如 init 进程。
杀死此类进程可能会导致系统崩溃。
超级用户可以杀死系统中的任何进程。

使用 pkill 或者 killall 命令终止进程

或者,我们可以使用 pkill 或者 killall 命令向进程发送终止信号。

# pkill [-options] PIDs

或者

# killall [-options] PIDs

pkill/killall 命令要求我们指定进程的名称而不是 PID。
例如,使用 pkill 命令终止 dtmail 进程。

# pkill dtmail 
# pgrep -l mail
#

Linux列出所有进程

例如,使用“ps -ef”命令列出当前计划在系统上运行的所有进程。

# ps -ef | more

其中:

  • UID : 进程所有者的用户名
  • PID : 进程的唯一进程标识号
  • PPID : 进程的父进程标识号
  • STIME : 进程开始的时间 (hh:mm:ss)
  • TTY:进程的控制终端。请注意,系统进程(守护进程)显示一个问号 (?),表示该进程在不使用终端的情况下启动。
  • TIME :进程的累计执行时间
  • CMD :命令名称、选项和参数

Linux中列出系统进程

进程状态 (ps) 命令列出与 shell 关联的进程。

# ps [options]

对于每个进程, ps 命令显示 PID 、终端标识符 (TTY)、累积执行时间 (TIME) 和命令名称 (CMD)。
例如,使用 ps 命令列出系统上当前正在运行的进程。

# ps
  PID TTY          TIME CMD
 1442 pts/1    00:00:00 sudo
 1448 pts/1    00:00:00 su
 1449 pts/1    00:00:00 bash
 1666 pts/1    00:00:00 ps

ps 命令有几个选项可用于显示添加进程信息。

  • -a :打印有关所有最常请求的进程的信息,进程组领导和与终端无关的进程除外
  • -e : 打印当前正在运行的每个进程的信息
  • -f :生成完整列表
  • -l : 生成一个长列表
  • -o 格式:根据格式中给出的格式规范写入信息。可以指定多个 -o 选项。格式规范被解释为所有格式选项参数的空格字符分隔连接。
如何在 Linux 中使用 kill、killall 和 pkill 杀死进程

什么是进程

进程,也称为任务,是程序的运行形式。
程序存储在磁盘上,进程在内存中运行。
进程具有父/子关系。
一个进程可以产生一个或者多个子进程。
多个进程可以并行运行。

使用 kill 命令终止进程

我们可以通过向相关进程发出适当的信号来终止任何进程。
默认情况下,kill 命令发送信号 15,即终止信号。
该信号使进程以有序的方式终止。
kill 命令向一个或者多个进程发送终止信号。
使用 kill 命令的语法如下:

# kill [-signal] PIDs

注意:kill 命令仅终止我们拥有的那些进程。
root 用户可以对任何进程使用 kill 命令。

在终止进程之前,我们需要知道进程的 PID。
我们可以使用 ps 或者 pgrep 命令来定位进程的 PID。
此外,我们可以通过在单个命令行上输入多个 PID 来同时终止多个进程。
让我们看一个 kill 命令的例子。
我们将终止进程“sleep 400”,如下所示。

# ps -ef | grep sleep
root      1337  1218  0 07:33 pts/0    00:00:00 sleep 400
# kill -9 1337
# ps -ef | grep sleep
#

强制终止进程:信号 9

某些进程会忽略 kill 命令发送的默认信号 15.
如果进程没有响应信号 15,我们可以通过使用信号 9 和 kill 或者 pkill 命令强制它终止。

# kill -9 PID

或者

# pkill -9 process_name

注意:发送信号15不一定会优雅地终止进程。只有当信号被进程捕获时,它才会按顺序清理自己并消失。否则,它就死了。

日期:2020-09-17 00:13:41 来源:oir作者:oir