我想写一个shell脚本(.sh文件)来获取给定的进程ID。我想在这里做的是一旦我得到进程ID,我想杀死那个进程。我在Ubuntu(Linux)上运行。
我能够用一个命令做
ps -aux|grep ruby kill -9 <pid>
但我不知道如何做通过一个shell脚本。
使用grep对ps的结果是一个坏主意在一个脚本,因为一些比例的时间它也将匹配您刚刚调用的grep进程。命令
pgrep
避免了这个问题,所以如果你需要知道进程ID,这是一个更好的选择。 (注意,当然可能有很多进程匹配。)
但是,在您的示例中,您可以使用类似的命令pkill来终止所有匹配的进程:
pkill ruby
顺便说一句,你应该知道,在几乎每一种情况下使用-9都是过度杀戮(ho ho) – 在“无用的kill -9 form letter的使用”的文本中有一些有用的建议:
No no no. Don’t use
kill -9
.It doesn’t give the process a chance to cleanly:
- shut down socket connections
- clean up temp files
- inform its children that it is going away
- reset its terminal characteristics
and so on and so on and so on.
Generally,send 15,and wait a second or two,and if that doesn’t
work,send 2,and if that doesn’t work,send 1. If that doesn’t,
REMOVE THE BINARY because the program is badly behaved!Don’t use
kill -9
. Don’t bring out the combine harvester just to tidy up the flower pot.