我想编写一个Shell脚本(.sh文件)以获取给定的进程ID。我要在这里执行的操作是,一旦获得进程ID,就想杀死该进程。我正在Ubuntu(Linux)上运行。
.sh
我能够用这样的命令来做到这一点
ps -aux|grep ruby kill -9 <pid>
但我不确定如何通过Shell脚本来实现。
使用grep上的结果ps是在脚本一个坏主意,因为时间一定比例也将匹配你刚才援引的grep的过程。该命令pgrep避免了此问题,因此,如果您需要知道进程ID,那是一个更好的选择。(请注意,当然,可能有许多匹配的过程。)
grep
ps
pgrep
但是,在您的示例中,您可以使用类似的命令pkill杀死所有匹配的进程:
pkill
pkill ruby
顺便说一句,您应该意识到,-9在几乎每种情况下,使用都是多余的(ho ho)-在“无用的套用kill -9信函” 文本中有一些有用的建议:
-9
kill -9
不不不。不要使用kill -9。 它并没有给过程一个干净的机会: 关闭插座连接 清理临时文件 通知其孩子它要消失了 重置其终端特性 等等,依此类推。 通常,发送15,然后等待一两秒钟,如果不起作用,则发送2,如果不起作用,则发送1。如果不起作用,请删除二进制文件,因为程序的行为不当! 不要使用kill -9。不要带出联合收割机只是为了整理花盆。
不不不。不要使用kill -9。
它并没有给过程一个干净的机会:
等等,依此类推。
通常,发送15,然后等待一两秒钟,如果不起作用,则发送2,如果不起作用,则发送1。如果不起作用,请删除二进制文件,因为程序的行为不当!
不要使用kill -9。不要带出联合收割机只是为了整理花盆。