linux上的“结束进程”等价物

6 linux terminal process

目前我正在使用 gnome 的系统监视器。它就像任务管理器,具有结束进程的功能,但有时这会使一切冻结并锁定。有没有办法用命令行更快地完全结束进程?

Joh*_*n T 14

您正在寻找kill命令

要按照您的要求“完全”结束进程,您可以像这样使用 kill :

kill -9 PID
Run Code Online (Sandbox Code Playgroud)

尽管这可能会产生不需要的影响并且会留下临时文件等,但您应该先尝试发送终止信号:

kill -TERM PID
Run Code Online (Sandbox Code Playgroud)

PID您希望杀死的进程的 ID在哪里。无论如何,使用 -9 开关都会终止进程,所以要小心。您可以使用该ps命令确定应用程序的 PID 。如果进程挂起,它很可能使用了相当多的资源,因此您还会使用该top命令在列表顶部附近看到它。系统监视器甚至应该告诉您 PID。

您还可以使用类似的方法来确定 PID:

ps -ax | grep program_name
Run Code Online (Sandbox Code Playgroud)

最左边的数字应该是PID。

  • 总是值得一提的是,应该先尝试“kill -TERM”。它让进程有机会自行清理,而“kill -KILL”会导致操作系统立即终止进程。可能会留下临时文件,并且可能会发生其他轻微的烦恼。 (5认同)
  • -TERM 是默认值;你可以输入kill PID (2认同)

vav*_*ava 11

试试 xkill,你可以把小程序放到你的面板上。您只需单击它,然后单击您要杀死的应用程序窗口,它就会立即消失。非常便利。

  • +1,`kill -9` 有时会留下一团糟,很少有必要。`xkill` 和 `killall <appname>` 在日常使用中更加方便,并且让进程有机会捕捉信号并进行清理。 (2认同)

jti*_*man 7

您可以使用 kill 将所需信号发送到进程 ID。您可以使用 pgrep 找到进程 ID,并使用 pkill命名进程发送信号。用于使用 pgrep 和 pkill 查找进程的模式通常仅与进程名称匹配。指定 -f 以检查进程的整个命令行。在使用 KILL ('9') 之前从一个 TERM 信号开始(如果没有指定信号,它是默认的),因为彻底杀死一个进程可能会产生不良的副作用。

例如,我将在我的系统上使用 dhclient3 进程。

老方法,ps | 格雷普:

$ ps awux | grep dhclient3
root      2539  0.0  0.1   2200   220 ?        S<s  Jul28   0:00 dhclient3 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp3/dhclient.eth0.leases eth0
1000     12734  0.0  0.5   3184   732 pts/3    R+   21:58   0:00 grep dhclient3
Run Code Online (Sandbox Code Playgroud)

杀死 dhclient:

$ kill -9 2539
Run Code Online (Sandbox Code Playgroud)

使用 pgrep/pkill:

$ pgrep dhclient
2539
Run Code Online (Sandbox Code Playgroud)

使用 -f 在命令行中的任何位置指定模式:

$ pgrep -f leases
2539
Run Code Online (Sandbox Code Playgroud)

用 pkill 杀死 dhclient 进程(-f 模式前的信号):

$ pkill -f dhclient3
$ pkill -9 -f dhclient3
Run Code Online (Sandbox Code Playgroud)

关于信号(来自 kill 手册页):

kill 的默认信号是 TERM。使用 -l 或 -L 列出可用信号。特别有用的信号包括 HUP、INT、KILL、STOP、CONT 和 0。替代信号可以通过三种方式指定:-9 -SIGKILL -KILL。负 PID 值?ues 可用于选择整个过程组;请参阅 ps 命令输出中的 PGID 列。-1 的 PID 是特殊的;它表示除kill 进程本身和init 之外的所有进程。