2009-11-10 51 views
7

我有一个文件“PID”中的进程ID 我想杀了它。linux shell:如何从文件读取命令参数?

喜欢的东西:

kill -9 <read pid from file> 

我想:

kill -9 `more pid` 

,但它不工作。我也尝试过xargs,但无法摆脱困境。

+0

我认为这是杀害其B/C'more'可能期待用户输入'more'位。 – BCS 2009-11-10 22:59:35

+0

http://www.speculation.org/garrick/kill-9.html – 2009-11-10 23:50:02

回答

12

让我来总结所有的答案

kill -9 $(cat pid) 
kill -9 `cat pid` 
cat pid | xargs kill -9 
13

是否

kill -9 $(cat pid) 

为你工作?

+1

+1。我更喜欢用$()方法来反引号,因为你可以嵌套它们。 – paxdiablo 2009-11-10 22:54:18

3

我的偏好是

kill -9 `cat pid` 

,将在反引号的任何命令工作。

2

kill -9 $(cat pid)cat pid | xargs kill -9都将工作

2

你应该开始逐步关闭,然后向上移动到重的东西杀掉进程,如果它不希望发挥很好。

一个SIGKILL(-9)信号不能被捕获,这将意味着该进程持有的任何资源都不会被清除。

尝试先使用kill SIGTERM(-15),然后通过执行kill -0 $(cat pid)来检查进程是否存在。如果它仍然在附近徘徊,那么通过一切手段用-9来打破它。

SIGTERM可以被进程捕获,任何已经正确编写的进程都应该有一个信号处理程序来捕获SIGTERM,然后在退出之前清理它的资源。

+0

请注意,您可以传递'kill -s TERM'而不是'kill -15'。 – jpaugh 2018-02-05 18:33:18

相关问题