【Ubuntu】killall的所有选项
azurekiln 发布于 阅读:7 Linux操作系统基础
那么今天要和大家讲的是killall
这个程序。在Linux中,它的核心工作是按进程的名字来结束一个或多个进程。它比 kill
更方便,但如果误用也可能更危险,所以理解它的每个选项至关重要。
那么现在我们通过help选项来列出killall
的帮助文档,我们输入 (1/16)
killall --help
按回车,我们可以看到主要options这里除了倒数第二个选项外共有13个选项。
Usage: killall [OPTION]... [--] NAME...
killall -l, --list
killall -V, --version
-e,--exact require exact match for very long names
-I,--ignore-case case insensitive process name match
-g,--process-group kill process group instead of process
-y,--younger-than kill processes younger than TIME
-o,--older-than kill processes older than TIME
-i,--interactive ask for confirmation before killing
-l,--list list all known signal names
-q,--quiet don't print complaints
-r,--regexp interpret NAME as an extended regular expression
-s,--signal SIGNAL send this signal instead of SIGTERM
-u,--user USER kill only process(es) running as USER
-v,--verbose report if the signal was successfully sent
-V,--version display version information
-w,--wait wait for processes to die
我们先来看主选项中的倒数第二个选项,这是一个打印当前killall
程序版本号信息的选项。
我们输入 (2/16)
killall --version
然后回车运行,可以看到当前killall
的版本号为 22.20。
接下来我们先来看第一个选项,require exact match for very long names
,意思为要求很长的名字完全匹配。对于名字超过15个字符的进程,系统可能会截断它们的名字。这个选项可以确保killall
匹配的是完整的、未被截断的名字。
第二个选项,case insensitive process name match
,意思为不区分大小写的进程名称匹配。比如killall -I firefox
会同时结束 firefox
, Firefox
, FIREFOX
等进程。
第三个选项,kill process group instead of process
,意思为终止进程组而不是进程。添加该选项后,指令会结束整个进程组,而不仅仅是单个进程。一个进程可能会启动一些子进程,它们会同属于一个进程组。这个选项可以把整个“家族”一锅端。
第四个选项,kill processes younger than TIME
,意思为杀死运行时间比指定时间短的进程。其中TIME是我们指定传入的参数,TIME可以是2m
(2分钟)、1h
(1小时),假如我们传入-y 2m
给killall
,那么killall
就会把运行时间小于2分钟的都给终止运行。
第五个选项,kill processes older than TIME
,意思为杀死运行时间比指定时间长的进程。规则和上一个选项大差不差。
第六个选项,ask for confirmation before killing
,意思为在杀死每个进程之前询问你是否确定要把进程杀死。 在每结束一个进程之前,都会停下来问你“是否要结束这个进程 (PID xxxx
)?(yes or no)”,给你一个反悔的机会。
第七个选项,list all known signal names
,意思为列出所有已知信号名称。
第八个选项,don't print complaints
,意思为不要把不满打印出来,也叫安静模式。如果添加了该选项,没有找到匹配的进程,它不会像没有添加那样那样抱怨“process not found”进程未能找到。
第九个选项,interpret NAME as an extended regular expression
,意思为将NAME解释为扩展正则表达式。将你提供的 NAME 解释为一个正则表达式。比如 killall -r "^gnome-"
可以结束所有以 gnome- 开头的进程。同时也非常危险,容易误伤进程!
第十个选项,send this signal instead of SIGTERM
,意思为发送此信号取代SIGTERM
。发送指定的信号,而不是默认的 SIGTERM
。最常用的就是 -s SIGKILL
或 -s 9
来进行强制结束。
第十一个选项,kill only process(es) running as USER
,意思为仅终止以用户身份运行的进程。添加该选项后可以指定杀死以哪个用户身份运行的进程,这样可以避免误伤其他用户的进程。
第十二个选项,report if the signal was successfully sent
,意思为报告信号是否成功发送。在成功发送信号后,会输出“已经向进程 (PID xxxx
) 发送了信号”的消息。
第十三个选项,wait for processes to die
,意思为等待进程终止。添加该选项后,killall
会等待所有被选中的进程完全死亡后,才会退出。这在写自动化脚本时非常有用,可以确保上一步清理工作完成后再进行下一步。