标签:linux process kill process-management
我知道pkill有比killall更多的过滤规则.我的问题是,有什么区别:
pkill [signal] name
和
killall [signal] name
我已经读过killall更有效并且杀死了与name程序匹配的所有进程和子进程(以及递归). pkill也不这样做?
解决方法:
pgrep
和pkill
实用程序是在Sun的Solaris 7中引入的,并且在g33klord noted中,它们采用模式作为参数,该模式与正在运行的进程的名称相匹配.虽然pgrep只打印一个匹配进程列表,但pkill会将指定的信号(或默认为SIGTERM)发送给进程. pgrep和pkill之间的常用选项和语义在您想要小心并首先使用pgrep查看列表匹配过程时会派上用场,然后继续用pkill杀死它们. pgrep和pkill由procps软件包提供,该软件包还提供其他/ proc文件系统实用程序,例如ps
,top
,free
,uptime
等.
killall命令由psmisc程序包提供,与pkill的不同之处在于,默认情况下,它在确定将发送信号的进程时与参数名称完全匹配(最多15个字符).可以指定-e, – exception选项,以便对长度超过15个字符的名称进行精确匹配.与pkill相比,这使得killall使用起来更安全一些.如果指定的参数包含斜杠(/)字符,则该参数将被解释为文件名,并且运行该特定文件的进程将被选为信号接收者. killall还通过-r,–regexp选项支持进程名称的正则表达式匹配.
还有其他差异.例如,killall命令具有按年龄匹配进程的选项(-o, – older-than和-y, – younger-than),而pkill可以被告知只杀死特定终端上的进程(通过-t)选项).显然,这两个命令具有特定的利基.
请注意,Unix System V(特别是Sun’s Solaris,IBM’s AIX和HP’s HP-UX)上的系统后代上的killall
命令会杀死特定用户可以填充的所有进程,如果由root运行,则会有效地关闭系统.
Linux psmisc实用程序已移植到BSD(并在扩展Mac OS X中),因此killall遵循“按名称杀死进程”语义.
标签:linux,process,kill,process-management 来源: https://codeday.me/bug/20190808/1622819.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。