使用killall命令终止Linux进程

我们之前看过命令 kill 根据进程的名称、所有者等来终止进程,但仅使用kill命令根据进程的所有者终止进程是通过grep等支持性命令来完成的。在本教程中,我们将看到更紧凑的命令集 killall .

null

killall命令语法

killall命令的语法如下所示。

Usage: killall [-Z CONTEXT] [-u USER] [ -eIgiqrvw ] [ -SIGNAL ] NAME...        killall -l, --list        killall -V, --version
Syntax
语法

killall命令帮助

下面列出了有关该命令的简单而快速的帮助信息。如下所示 killall 命令提供了一些特性,如精确的进程名匹配、忽略大小写、交互式使用、详细或调试模式操作。

$ killall -h
图片[2]-使用killall命令终止Linux进程-yiteyi-C++库
救命

用ps列出进程

Killall提供了方便的方法,可以用进程的名称来终止进程,使用完整的进程名称将使Killall操作更加可靠。我们将列出系统中的所有进程,其中与用户相关的进程通常会在下面的输出中列出。

$ ps uax
List Process With ps
用ps列出进程

杀戮过程

现在我们可以根据它们的名字启动kill进程。这个例子是一个简单的例子,我们只提供了一些驻留在进程名中的术语。我们的过程是 watch ls 就像下面一样。

$ ps uax | grep "watch ls"

现在我们可以提供条件 watch 向下面的killall命令。在这个命令之后,我们可以处理并看到它被杀死。

$ killall watch

使用确切的进程名称终止

在上一个示例中,我们只提供了进程名称的一部分,而不是全部。在某些情况下,这是不合适的,因为名称相似的进程。我们可以指定确切的名称来确切地指定进程。在本例中,我们有两个名称相似的进程,如下所示。

$ ps uax | grep "watch ls"
Kill With Exact Process Name
使用确切的进程名称终止

现在我们只想扼杀这个过程 watch ls 哪个PID是3733 . 但我们不想杀人 watchgnupg 哪个PID是3732 . 现在我们将为进程名提供-e参数,以匹配如下所示的进程的确切名称。

$ killall -e "watch"
Kill With Exact Process Name
使用确切的进程名称终止

我们再次检查正在运行的进程,只看到 watchgnupg 过程。

相关文章: Linux Lsof命令教程及示例

忽略的区分大小写 进程名称

在终止进程时,进程的名称很重要。进程名称可以是大小写,这是不确定的。在这些情况下,使用ignore case参数非常重要。 -I 可以提供参数来忽略大小写敏感度,如下所示。在下面的示例中,我们可以看到 watch . 我们会用大写来杀人 WATCH 术语如下。

$ killall -I WATCH
Ignore Case
忽略大小写

根据进程所有者或用户终止 姓名

众所周知,每个Linux进程都有一个所有者用户名。Killall命令支持根据进程的用户名终止进程。请记住,这将杀死指定用户的所有进程。在这些例子中,我们想杀死用户名 ismail 过程。

$ killall -u ismail
Kill According To Process User Name
根据进程用户终止 姓名

正如我们看到的,我们还终止了ssh会话,该会话的用户名也是ismail。

根据进程组名称终止

众所周知,每个Linux进程都有一个所有者组名。而这个功能和按用户名杀人是一样的。我们只提供进程的组名 -g 选项如下。

$ killall -g ismail

终止进程前确认

到目前为止,我们已经在没有得到确认的警告的情况下严厉地终止了进程。在终止下面这样的进程时,可以选择询问确认。选择是 -i . 由于其使用方式,此选项也以交互方式定义。同时也提供了PID以保持稳定性。

$ killall -i watch

根据运行时间终止进程

还有另一个有趣的特点 killall 命令。进程可以根据其运行时间终止。在本例中,我们将终止所有运行超过1分钟的进程。此选项无效 -o

$ killall -o 1m watch

而且,我们可以在指定的时间内终止进程。这一特征表示为 -y 选项。

$ killall -y 5h watch

下面我们可以看到这个特性的时间是如何表示的。

  • s
  • m 分钟
  • h 小时
  • d
  • w
  • M
  • y

相关文章: 如何在Linux中排除Grep?

对进程名使用正则表达式

到目前为止,我们已经使用了特定的进程名称。这很容易表达,但有时我们需要表达相似但不相同的泛型进程名称。正则表达式是表达文本中结构部分的方法。在本例中,我们将终止以w开头的所有进程 以h结尾。

$ killall -r "w.*h$"
Using Regular Expression For Process Names
对进程名使用正则表达式

在这个例子中,只有 watch 进程被终止是因为我们限制了正则表达式,进程名称的结尾必须是 h . 所以只有监视进程被匹配和终止。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享