2014-11-05 164 views
1

爲了遠程啓動程序,記錄其輸出,並立即看到該日誌,我使用這個腳本命令的PID:獲取其輸出管道

nohup mycommand 2>&1 | tee -a server.log & 

現在,我想在文件中存儲新啓動的mycommand的pid(其名稱非常通用,我不能只使用pgrep,因爲這會有碰撞風險)。

如果我只是添加echo $! > mycommand.pid我得到的tee的PID。

我如何可靠地寫入的mycommand到一個文件中的pid?

順便說一下,爲什麼不這樣給出正確的PID?

(nohup mycommand 2>&1 ; echo $! > mycommand.pid) | tee -a server.log & 
+0

可能的重複:http://stackoverflow.com/questions/3345460/how-to-get-the-pid-of-a-process-in-a-pipeline – anubhava 2014-11-05 10:18:17

回答

1

OK,這個簡單的變型的工作原理:

(nohup mycommand 2>&1 & echo $! > mycommand.pid) | tee -a server.log & 

我不知道爲什麼;沒有工作,爲什麼我要使用&代替。

+0

我剛剛接受了我的答案,因爲它已經3個月了。但如果有人用一個可靠的解釋寫出更好的答案,我會很高興接受它。 – 2015-02-10 16:17:03