2009-11-10 119 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

相關問題