【Ubuntu】killall的所有选项
那么今天要和大家讲的是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会等待所有被选中的进程完全死亡后,才会退出。这在写自动化脚本时非常有用,可以确保上一步清理工作完成后再进行下一步。
