关于linux:如何在-Linux-命令行中终止进程

3次阅读

共计 1874 个字符,预计需要花费 5 分钟才能阅读完成。

如果你想在 linux 上进行某个过程,你会怎么操作?

如果命令 / 过程在前台运行,您能够应用 Ctrl+C 终端快捷方式,然而,如果过程不可见(在后盾运行),您能够应用专用命令“杀死它”。

“终止过程”是指在执行过程中进行过程,如果您晓得过程 ID (PID),则能够应用 kill 命令,如下所示:

kill <signal> <PID>

在下面的语法中,signal 指的是要发送终止的终止信号,并且 PID 指的是过程的 ID。

还有一个 killall 命令,我将在本文中探讨 kill 和 killall 命令。

在你开始杀死过程之前,你应该晓得一些事件,例如有哪些终止信号可用,如何找到 PID 等。

让咱们先从信号开始。

Linux 中的终止信号
当一个过程被操作系统或用户终止时,即过程没有自行实现,它会被发送一个终端信号。

以下是可用的终止信号:

SIGHUP:
1:信号挂断:当管制它的终端敞开时发送到过程。
SIGINT:
2:信号中断:当用户终止过程时发送给过程的信号。(例如 Ctrl + X)
SIGKILL:
9:Signal Kill:立刻退出过程的信号,不容许它保留以后状态。
SIGTERM:
15:信号终止:发送到信号以申请终止过程。该信号能够被过程疏忽。但这是终止过程的首选形式,因为它能够在过程收到 SIGTERM 时开释资源。
SIGSTOP:
19(x86、ARM)、17(Alpha)、23(MIPS)、24(PARISC):信号进行:进行过程但稍后复原的信号。
个别状况会应用信号 9 和 15

获取过程的 PID
您还须要理解要终止的过程的详细信息,应用 kill 命令,您必须提供过程的 ID (PID),您能够从过程名称中获取 PID:

pidof exact_process_name

在 Linux 命令行中终止过程
让咱们先看看 kill 命令,因为您将比 killall 更多地应用它。

应用 kill 命令
该 kill 命令要求您晓得要终止的过程的 ID,以及可选的终止信号。

要简略地终止命令,请应用以下语法:

kill [signal] <PID>

向 PID 发送终止信号是可选的,如果未提供任何信号,则 kill 默认发送 SIGTERM (15),以失常终止所述过程完结。

我启动了 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] <process-name>
与 kill 命令相似,指定终止信号是可选的,当没有指定终止信号时,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
1
命令中可用的一些有用选项 pkill 如下:

-u: 特定所有者领有的过程
-x: 齐全匹配模式的过程
-signal: 指定终止信号(默认为 SIGTERM)
假如我的 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 的是因为我正在解决不属于我的用户的过程。

我应用的环境是租的 3A 服务器,有须要的能够私

正文完
 0