MacOS下执行killall mongrel_rails提示未找到匹配进程问题咨询
问题原因
- MacOS自带的
killall为BSD版本,与Linux常用的GNU版本killall逻辑不同:BSD版本默认仅匹配进程的可执行文件短名称(即ps -xc输出的进程名,最长仅16字节),不会匹配ps aux输出最后一列的完整命令行内容。 - 你场景中的
mongrel_rails是Ruby开发的脚本程序,实际启动进程的可执行文件为ruby,ps aux里显示的mongrel_rails属于命令行参数部分,因此BSDkillall搜索mongrel_rails时无法匹配到对应进程。
解决方案
以下方案均支持直接写入脚本实现批量杀进程:
- 方案1:使用系统自带的
pkill命令(兼容性最好,无需额外安装)pkill默认支持命令行内容匹配,添加-f参数即可匹配完整命令行中的关键字:# 普通杀死进程 pkill -f mongrel_rails # 强制杀死进程(对应原kill -9逻辑) pkill -9 -f mongrel_rails - 方案2:安装GNU版本
killall对齐Linux使用习惯
通过Homebrew安装psmisc包(内含GNUkillall):
安装完成后即可直接使用和Linux行为完全一致的brew install psmisckillall命令:killall mongrel_rails - 方案3:手动过滤PID批量杀死(无额外依赖)
结合ps、grep、awk过滤出目标PID后批量执行杀死操作:kill -9 $(ps aux | grep mongrel_rails | grep -v grep | awk '{print $2}')
内容的提问来源于stack exchange,提问作者Max Williams
相关产品推荐
相关产品推荐

