2012-07-04 92 views
0

我的系統是Ubuntu的10使用shell變量時,SYS功能

這裏是我的代碼:

#!/bin/bash 
pid = `ps -ef | grep process_string | /usr/bin/awk '{print $2}'` 
`kill -9 $pid` 

PID是process_string的進程ID(只有一個匹配)

但是當我運行這個sh時,我不會殺死這個進程

我該怎麼辦解決這個問題?

回答

1
  1. 您不能在任務的任一側留出空間。在這種情況下,它試圖執行參數爲=pid和標準輸出爲ps -ef ...
  2. 第二行將嘗試執行kill -9 $pid的輸出,您不希望這樣。使用$(...)比反引號更好。
#!/bin/bash 
pid=$(ps -ef | grep process_string | /usr/bin/awk '{print $2}') 
kill -9 $pid 

您可能需要使用pgrep來獲得,而不是PID,或pkillkillall只是按名稱殺死直接(注意與上一個,顧名思義它會殺死所有指定程序的實例)。

+0

thx〜它的工作原理是任何sys commond都可以直接在shell腳本中調用嗎?以及** **的用法是什麼? – sashimi

+0

反引號和'$(...)'在功能上是相同的,'$(...)'形式只是處理引用(很多)更好的東西,並且可以在降價中正確顯示。它們被用來捕獲輸出,例如將其分配給一個變量或直接放在命令行上('kill -9 $(pgrep process_string)')。 – Kevin

+0

我會檢查** pkill **和** killall **您稍後提到。感謝您凱文! :) – sashimi