大多数情况下,您希望程序以自己的方式结束,或者如果它是图形应用程序,则使用相应的菜单选项或使用角落中的十字。
每隔一段时间程序就会挂起,在这种情况下,你需要一种方法来杀死它。 您可能还想杀死一个正在后台运行的程序,您不再需要运行该程序。
本指南提供了一种方法来杀死系统上运行的相同应用程序的所有版本。
如何使用killall命令
killall命令按名称杀死所有进程。 这意味着如果你有三个版本的同一个程序运行killall命令将会全部杀死所有三个。
例如,打开一个小程序,如图像查看器。 现在打开相同图像查看器的另一个副本。 对于我的例子,我选择了Xviewer,它是侏儒之眼的克隆。
现在打开一个终端并输入以下命令:
全杀
例如,要杀死Xviewer的所有实例,请键入以下内容:
killall xviewer
您选择杀死的程序的两个实例现在都会关闭。
杀死精确过程
killall可能会产生奇怪的结果。 那么这里有一个原因。 如果您的命令名长度超过15个字符,那么killall命令只能处理前15个字符。 因此,如果您有两个共享前15个字符的程序,即使您只想杀一个,程序也会被取消。
为了解决这个问题,你可以指定下面的开关,它只会杀死匹配确切名称的文件。
killall -e
忽略杀伤程序时的情况
要确保killall命令忽略您提供的程序名称的大小写,请使用以下命令:
killall - 我
killall --ignore-case
终止同一组中的所有程序
当你运行一个如下的命令时,它将创建两个进程:
ps -ef | 减
一个命令用于ps -ef部分,其中列出了系统上正在运行的所有进程,并将输出传递给less命令 。
这两个程序都属于同一个组,即bash。
要同时杀死这两个程序,您可以运行以下命令:
killall -g
例如,要终止在bash shell中运行的所有命令,请运行以下命令:
killall -g bash
顺便列出所有正在运行的组运行以下命令:
ps -g
在杀死程序之前获得确认
显然,killall命令是一个非常强大的命令,你不想意外地杀死错误的进程。
使用下面的开关,你会被问到在每个过程被杀之前你是否确定。
killall -i
杀死已经运行了一段时间的进程
想象一下,你一直在运行一个程序,并且花费的时间比你期望的要长。
您可以通过以下方式杀死该命令:
killall -o h4
上述命令中的h代表几小时。
您还可以指定以下任何一项:
- 秒 - 秒
- 米 - 分钟
- 小时
- d - 天
- w - 周
- M - 月
- 年 - 年
或者,如果您希望杀死刚刚开始运行的命令,则可以使用以下开关:
killall -y h4
这一次killall命令将杀死所有运行时间少于4小时的程序。
当一个进程没有被终止时,不要告诉我
默认情况下,如果您尝试并杀死未运行的程序,您将收到以下错误:
程序名称:找不到过程
如果您不想告诉过程是否未找到,请使用以下命令:
killall -q
使用正则表达式
您可以指定正则表达式,而不是指定程序或命令的名称,以便所有与正则表达式匹配的进程都由killall命令关闭。
要使用正则表达式,请使用以下命令:
killall -r
杀死指定用户的程序
如果要杀死特定用户正在运行的程序,可以指定以下命令:
killall -u
如果你想杀死一个特定用户的所有进程,你可以省略程序名称。
等待killall完成
默认情况下,killall会在运行时直接返回到终端,但您可以强制killall等待,直到指定的所有进程都已关闭,然后再返回到终端窗口。
为此,运行以下命令:
killall -w
如果节目永不消逝,那么killall也将继续生存下去。
信号信号信号
默认情况下,killall命令将SIGTERM信号发送给程序以使其关闭,这是杀死程序的最干净的方法。
然而,您可以使用killall命令发送其他信号,您可以使用以下命令列出它们:
killall -l
返回的列表将如下所示:
- HUP
- INT
- 放弃
- 生病
- 陷阱
- ABRT
- IOT
- 总线
- FPE
- 杀
- USR1
- SEGV
- USR2
- 管
- ALRM
- 术语
- STKFLT
- CHLD
- CONT
- 停
- 三偏磷酸钠
- TTIN
- TTOU
- URG
- XCPU
- XFSZ
- VTALRM
- PROG
- WYNCH
- IO
- PWR
- SYS
- 没用过
这份名单非常长。 要阅读这些信号意味着什么运行以下命令:
男子7号信号
一般来说,你应该使用默认的SIGTERM选项,但是如果程序拒绝死机,你可以使用SIGKILL来强制程序关闭,尽管这种方式没有尊严。
其他杀死程序的方法
如链接指南中突出显示的,还有其他五种杀死Linux应用程序的方法 。
然而,为了节省您点击链接的努力,这里是一个部分,显示这些命令是为什么您可以通过killall使用这些命令。
第一个是kill命令。 你所看到的killall命令非常适合杀死同一个程序的所有版本。 kill命令旨在一次杀死一个进程,因此更有针对性。
要运行kill命令,您需要知道要杀死的进程的进程ID。 为此,您可以使用ps命令 。
例如,要查找运行的Firefox版本,可以运行以下命令:
ps -ef | grep firefox
您将在末尾看到带有命令/ usr / lib / firefox / firefox的一行数据。 在该行的开头,您将看到您的用户ID和用户ID是进程ID后的编号。
使用进程ID可以通过运行以下命令来杀死Firefox:
kill -9
杀死程序的另一种方法是使用xkill命令。 这通常用于杀死行为不当的图形应用程序。
要杀死Firefox等程序,请打开终端并运行以下命令:
xkill
光标现在会变成一个大的白色十字。 将鼠标悬停在希望杀死的窗口上,然后用鼠标左键点击。 该程序将立即退出。
杀死进程的另一种方法是使用Linux top命令。 top命令列出系统上正在运行的所有进程。
您只需按下“k”键并输入您想要杀死的应用程序的进程ID,就可以杀死一个进程。
在本节前面的kill命令中,它要求您使用ps命令查找进程,然后使用kill命令终止进程。
这不是最简单的选择。
首先,ps命令会返回不需要的信息。 你想要的只是进程ID。 您可以通过运行以下命令更简单地获取进程ID:
pgrep firefox
上述命令的结果只是Firefox的进程ID。 您现在可以运行kill命令,如下所示:
杀死
(用pgrep返回的实际进程ID替换
然而,简单地将程序名称提供给pkill实际上更容易,如下所示:
pkill firefox
最后,您可以使用图形工具,例如Ubuntu提供的名为“System Monitor”的图形工具。 要运行“系统监视器”,请按超级键(大多数计算机上的Windows键)并在搜索栏中键入“sysmon”。 当系统监视器图标出现时,点击它。
系统监视器显示进程列表。 要以干净的方式结束程序,请选择它并按屏幕底部的结束键(或按CTRL和E)。 如果这不起作用,请右键单击并选择“杀死”或按CTRL和K关于您希望杀死的进程。