kill 和 killall 命令都用于强制停止 Linux 中的进程,我们今天聊聊这两者之间的差异。
许多 Linux 用户都知道 kill 命令,但没有多少人知道并使用 killall 命令。这两个命令可能会让人觉得迷惑,它们名称相同,并且用途也类似(都用于结束进程)。
那么,kill 和 killall 到底有什么区别呢?你应该使用哪个命令,以及在什么情况下使用呢?
kill 和 killall 命令的区别
kill 命令应对的是进程ID(PID),它会根据你提供的 PID 来终止进程。而 killall 针对的是进程名称,它会终止给定进程名称的所有进程。例如,有三个 mysql 实例正在运行,killall 会终止所有的这三个进程:使用 killall mysql 命令;而如果是用 kill 的话,你需要提供这三个实例的PID来终止它们:kill PID1 PID2 PID3。
简单地说,kill 命令与 PID(通常是单个 PID)一起使用,killall 命令与进程名称一起使用,并使用进程名称杀死所有进程。
来举个例子。
假如我们启动了三个名为 evince 的程序实例,让其在后台运行:
evince &evince &evince &
那么现在,我们有了三个名为 evince 的进程,但是每个进程的进程ID是不同的。
要使用 kill 命令强制停止进程,需要提供所需进程的PID:
kill PID1
但是,如果使用 killall 的话,提供进程名称,它将杀掉所有使用该进程名称命名的实例:
killall evince
如下图所示:

现在我们应该能直观的注意到,kill 命令需要进程ID,killall命令需要进程名称。

你会使用哪个命令呢,kill 还是 killall ?
由于 kill 命令可用于单个进程,因此更安全。在使用 killall 命令之前,你需要确保没有其他类似名称的进程(并且你不想停掉的)正在运行着。




