2014-03-29 28 views
1

我正在嘗試啓動tcpdump作爲後臺進程,並獲取其PID。該腳本將監視系統的磁盤空間,CPU和內存,並在超出閾值時終止tcpdump進程。但我不能使用$!獲得PID。輸出是空白的。

#!/bin/bash 
`nohup tcpdump port 389 -i bond0 -s 0 -w /tmp/capture.pcap > nohup2.out 2>&1&` 
my_pid=$!                  
echo $my_pid                 

flag=1                   
exit 1                   

和輸出

bash # sh t.sh 

bash #  
+4

刪除反引號! – devnull

回答

3

更改此:

`nohup tcpdump port 389 -i bond0 -s 0 -w /tmp/capture.pcap > nohup2.out 2>&1&` 

這樣:

nohup tcpdump port 389 -i bond0 -s 0 -w /tmp/capture.pcap > nohup2.out 2>&1 & 

的反引號表示命令應該在子shell中運行並且其輸出被捕獲並被替換到一個新的命令。例如,此命令:

`echo foo bar` 

相當於此命令:

foo bar 

,因爲它運行echo foo bar,捕獲輸出foo bar,然後運行foo bar。在你的情況下,你完全沒有必要(如果只是因爲你將輸出重定向到一個文件),所以你可以放下它們。