«

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


扫描二维码,在手机上阅读
收藏
请先 登录 再评论