在macos bash中终止进程的脚本不工作:进程id非法
我创建这个函数是为了按部分名称杀死一个进程,将它放入bash_概要文件中,然后执行它。 当我手动一次运行一个命令时,一切正常。 但是当我调用该函数时,它的输出失败:“非法进程id” 输出:在macos bash中终止进程的脚本不工作:进程id非法,bash,macos,shell,macos-sierra,Bash,Macos,Shell,Macos Sierra,我创建这个函数是为了按部分名称杀死一个进程,将它放入bash_概要文件中,然后执行它。 当我手动一次运行一个命令时,一切正常。 但是当我调用该函数时,它的输出失败:“非法进程id” 输出: kill: illegal process id: i311821 运行 ps -fe | grep '[p]rocessName' 给出: 1543721191 1947 1946 0 9:12上午??0:46.76.././jdk/bin/java-server-da-XX:PermSize=256
kill: illegal process id: i311821
运行
ps -fe | grep '[p]rocessName'
给出:
1543721191 1947 1946 0 9:12上午??0:46.76.././jdk/bin/java-server-da-XX:PermSize=256m Xrunjdwp:transport=dt_socket,地址=8000,挂起=n,服务器=y-DMonitorDisabled-Xms2048m-Xmx2048m-Dwrapper.port=32000-com.XXX.yy.server.util.Main-b0.0-c默认值
原因是什么?发现问题:
2美元后的一个空格不见了。修复后,它可以工作:
ps -ef | grep "[X]XX" | grep -v grep | awk '{print $2 }' | xargs kill -9
将
ps-fe | grep'[p]rocessName'
的输出添加到您的问题中。1543721191 1947 1946 0 9:12上午??0:46.76.././jdk/bin/java-server-da-XX:PermSize=256m Xrunjdwp:transport=dt_socket,地址=8000,挂起=n,server=y-DMonitorDisabled-Xms2048m-Xmx2048m-Dwrapper.port=32000-com.XXX.YYY.server.util.Main-b0.0.0-c default将您的最后一条评论放在问题中,您可能会得到更易于管理的输出,例如ps-cA
而不是ps-fe
也可能需要考虑pgrep
,具体取决于您的流程如果您试图杀人,您可以使用pgrep
显著缩短此时间。如果有多个进程具有相同的名称,那么显然您必须进行更多的微调。这将不会产生任何差异。您的错误是由awk
的输入引起的,而不是由输出引起的。空格不是必需的,也不会改变字段2包含非数字字符(i
)的事实。我也不相信tge空格是问题所在。但奇怪的是,在添加空间后,事情会正常进行。如果没有它,awk将输出第一个令牌,而不是第二个令牌
ps -ef | grep "[X]XX" | grep -v grep | awk '{print $2 }' | xargs kill -9