假如你想在linux上停止某个进程,你会如何操作?
假如命令/进程在前台运行,您可以使用Ctrl+C终端快捷方法,并且,假如进程不可见(在后台运行),您可以使用专用命令“杀死它”。
“终止进程”是指在执行过程中停止进程,假若您晓得进程ID(PID),则可以使用kill命令,如下所示:
kill
在前面的句型中,signal指的是要发送中止的中止讯号,而且PID指的是进程的ID。
还有一个killall命令,我将在本文中讨论kill和killall命令。
在你开始杀害进程之前,你应当晓得一些事情,比如有什么中止讯号可用,怎样找到PID等。
让我们先从讯号开始。
Linux中的中止讯号
当一个进程被操作系统或用户中止时,即进程没有自行完成linux 命令行启动进程,它会被发送一个终端讯号。
以下是可用的中止讯号:
SIGINT:SIGKILL:SIGTERM:SIGSTOP:
通常情况会使用讯号9和15
获取进程的PID
您还须要了解要中止的进程的详尽信息,使用kill命令,您必须提供进程的ID(PID),您可以从进程名称中获取PID:
pidof exact_process_name
复制
在Linux命令行中中止进程
让我们先瞧瞧kill命令,由于您将比killall更多地使用它。
使用kill命令
该kill命令要求您晓得要中止的进程的ID,以及可选的中止讯号。
要简单地中止命令,请使用以下句型:
kill [signal]
复制
向PID发送中止讯号是可选的,倘若未提供任何讯号,则kill默认发送SIGTERM(15)linux命令详解词典,以正常中止所述进程结束。
我启动了sleep命令的后台进程(它给了我一个PID),让我们尝试使用kill命令杀害它。
杀害这个特定的实例sleep如下所示:
$ sleep 120 &
[1] 125686
$ kill 125686
[1] + terminated sleep 120
复制
假如我想使用中止讯号,我可以使用数值或讯号本身:
$ sleep 120 &
[1] 125746
$ kill -SIGKILL 125746
[1] + killed sleep 120
####----##-----####
$ sleep 120 &
[1] 125759
$ kill -9 125759
[1] + killed sleep 120
复制
️假如kill命令没有指定讯号,则默认使用SIGTERM(15)。
使用killall命令
若果不晓得某个进程的PID是多少,或则该进程有多个子进程,又想一次性杀害子进程和父进程,可以使用killall命令。
killall [signal]
复制
与kill命令类似linux 命令行启动进程,指定中止讯号是可选的小型linux系统,当没有指定中止讯号时,killall将发送SIGTERM(15)以端庄地关掉所述进程。
为了演示的使用killall,我想杀害两个正在运行的sleep命令。
$ sleep 120 &
[1] 18609
$ sleep 2000 &
[2] 18612
$ killall sleep
[1]- Terminated sleep 120
[2]+ Terminated sleep 2000
复制
据悉,您可以使用该-e标志来查找进程名称的完全匹配。
使用pkill命令
命令的代替命令kill是pkill命令,它是pgrep和kill命令的“组合”。
killall杀害所有具有匹配名称的进程。另一方面,pkill使用模式匹配来匹配进程并杀害它们。
下边是句型:
pkill [options] pattern
复制
命令中可用的一些有用选项pkill如下:
假定我的guest计算机上有一个用户当前不应当运行任何进程,假如有,我想中止它们,我怎么能够做到这一点?
$ ps aux | grep sleep
guest 126061 0.0 0.0 6664 428 pts/3 S 10:14 0:00 sleep 50
$ sudo pkill -u guest
复制
请注意,我使用sudo的是由于我正在处理不属于我的用户的进程。