假如你想在linux上停止某个进程,你会如何操作?
假如命令/进程在前台运行,您可以使用Ctrl+C终端快捷方法,并且,假如进程不可见(在后台运行),您可以使用专用命令“杀死它”。
“终止进程”是指在执行过程中停止进程,假若您晓得进程ID(PID),则可以使用kill命令,如下所示:
kill
在前面的句型中linux 命令行启动进程,signal指的是要发送中止的中止讯号,而且PID指的是进程的ID。
还有一个killall命令,我将在本文中讨论kill和killall命令。
在你开始杀害进程之前,你应当晓得一些事情,比如有什么中止讯号可用,怎样找到PID等。
让我们先从讯号开始。
Linux中的中止讯号
当一个进程被操作系统或用户中止时,即进程没有自行完成,它会被发送一个终端讯号。
以下是可用的中止讯号:
SIGHUP:
1:讯号挂断:当控制它的终端关掉时发送到进程。
SIGINT:
2:讯号中断:当用户中止进程时发送给进程的讯号。(比如Ctrl+X)
SIGKILL:
9:SignalKill:立刻退出进程的讯号,不容许它保存当前状态。
SIGTERM:
15:讯号中止:发送到讯号以恳求中止进程。该讯号可以被进程忽视。但这是中止进程的首选方法,由于它可以在进程收到SIGTERM时释放资源。
SIGSTOP:
19(x86、ARM)、17(Alpha)、23(MIPS)、24(PARISC):讯号停止:停止进程但稍后恢复的讯号。
通常情况会使用讯号9和15
获取进程的PID
您还须要了解要中止的进程的详尽信息,使用kill命令,您必须提供进程的ID(PID),您可以从进程名称中获取PID:
pidofexact_process_name
在Linux命令行中中止进程
让我们先瞧瞧kill命令,由于您将比killall更多地使用它。
使用kill命令
该kill命令要求您晓得要中止的进程的ID,以及可选的中止讯号。
要简单地中止命令,请使用以下句型:
kill[signal]
向PID发送中止讯号是可选的linux 命令行启动进程,倘若未提供任何讯号,则kill默认发送SIGTERM(15),以正常中止所述进程结束。
我启动了sleep命令的后台进程(它给了我一个PID),让我们尝试使用kill命令杀害它。
杀害这个特定的实例sleep如下所示:
$sleep120&
[1]125686
$kill125686
[1]+terminatedsleep120
假如我想使用中止讯号linux系统装win7,我可以使用数值或讯号本身:
$sleep120&
[1]125746
$kill-SIGKILL125746
[1]+killedsleep120
####----##-----####
$sleep120&
[1]125759
$kill-9125759
[1]+killedsleep120
���️假如kill命令没有指定讯号,则默认使用SIGTERM(15)。
使用killall命令
若果不晓得某个进程的PID是多少,或则该进程有多个子进程linux软件工程师,又想一次性杀害子进程和父进程,可以使用killall命令。
killall[signal]
与kill命令类似,指定中止讯号是可选的,当没有指定中止讯号时,killall将发送SIGTERM(15)以端庄地关掉所述进程。
为了演示的使用killall,我想杀害两个正在运行的sleep命令。
$sleep120&
[1]18609
$sleep2000&
[2]18612
$killallsleep
[1]-Terminatedsleep120
[2]+Terminatedsleep2000
据悉,您可以使用该-e标志来查找进程名称的完全匹配。
使用pkill命令
命令的代替命令kill是pkill命令,它是pgrep和kill命令的“组合”。
killall杀害所有具有匹配名称的进程。另一方面,pkill使用模式匹配来匹配进程并杀害它们。
下边是句型:
pkill[options]pattern
命令中可用的一些有用选项pkill如下:
-u:特定所有者拥有的进程
-x:完全匹配模式的进程
-signal:指定中止讯号(默认为SIGTERM)
假定我的guest计算机上有一个用户当前不应当运行任何进程,假如有,我想中止它们,我怎么能够做到这一点?
$psaux|grepsleep
guest1260610.00.06664428pts/3S10:140:00sleep50
$sudopkill-uguest
请注意,我使用sudo的是由于我正在处理不属于我的用户的进程。
我使用的环境是租的3A服务器,有须要的可以私