所以,我需要運行一個程序,而不是跟蹤它的PID(至少在內存中),然後殺死那個程序。有任何想法嗎?我的直接想法是用後來可以找到的東西來標記這個過程,但這似乎是一個破產。我的下一個想法是在磁盤上存儲PID,但我不知道這種事情的慣例是什麼。有任何想法嗎?謝謝!在磁盤上標記unix進程/存儲pid?
0
A
回答
1
正如你和chepner已經提到的,最直接的(也是常見的情況)是將它存儲在一個pid文件中。對於這一點:
如果它是一個系統範圍PROGRAMM:
/var/run/prog.pid
如果它可能被多次運行的系統中安裝的程序:
/var/run/prog/prog_instance.pid
如果它是一個用戶本地程序:
$HOME/.prog/prog.pid
其他選項可能是使用pgrep
找到它,只要你可以唯一地定義調用命令。例如,傳遞一個沒有使用的僞參數並將其用於檢索:
$ prog.sg --instance_1234 &
$ pgrep -f -- '--instance_1234'
3523
2
您的程序可以在/var/run/
下創建一個目錄來存儲這些文件。舉例來說,如果你的程序是myprog
它可以存儲在
/var/run/myprog/PID
在啓動的PID如果你的程序可以在同一時間運行多個實例,您可以使用PID自身的文件名,連同其啓動時間,以確保每個實例的唯一文件名。
/var/run/myprog/201410302306.1283.pid
(請注意,如果您在文件名稱中使用PID,它給你,如果你真正的文件本身在寫PID;一個空文件就足夠了。)
0
可以使用start-stop-daemon
啓動一個程序並在稍後殺死它。它有很多選項來查找程序,最有用的是--pid,用於存儲和檢索文件系統中的文件的pid,通常在/var/run
(注意文件系統權限來寫入)。
請參閱手冊頁獲取更多提示。
相關問題
- 1. RDFlib'磁盤'存儲
- 2. RavenDB磁盤存儲
- 3. 將會話存儲在磁盤上
- 4. Django:在磁盤上存儲InMemoryUploadedFile
- 5. 在磁盤或MongoDB上存儲文件
- 6. 將整個進程狀態存儲在磁盤上並稍後恢復? (在Linux/Unix上)
- 7. grepping進程的PID - Unix的
- 8. 如何將存儲過程的輸出存儲到磁盤上
- 9. 數據庫記錄如何存儲在磁盤上?
- 10. Clojure - 在磁盤上記憶
- 11. 磁盤上的InfluxDB存儲大小
- 12. 磁盤上的JackRabbit存儲庫
- 13. Apache Cassandra磁盤上的數據存儲
- 14. Sesame 2.7在磁盤上存儲本地存儲庫?
- 15. Memcache使用磁盤存儲?
- 16. ehcache 2.5.0磁盤存儲
- 17. 從存儲器到磁盤
- 18. Java ehcache磁盤存儲
- 19. 存儲過程和其他對象在磁盤上的位置?
- 20. 存儲在磁盤上的HashMap從磁盤迴讀非常緩慢
- 21. 在磁盤中存儲圖像
- 22. NSURLCache在iOS 5中的磁盤存儲?
- 23. iOS:NSIndexPath在NSDictionary - 不會存儲到磁盤
- 24. Erlang字典。它存儲在內存或磁盤上
- 25. 來自pid的Unix進程名稱
- 26. 金字塔 - 上傳圖像並存儲在磁盤上
- 27. RavenDB Embedded:存儲在磁盤上的數據在哪裏?
- 28. app-debug.apk在磁盤上不存在
- 29. 將進程內存轉儲到磁盤以分析內存泄漏
- 30. 在磁盤上對磁盤上的值進行持久重新排序
爲什麼NOT NOT在內存中存儲PID的附加約束?你可以嘗試按照http://stackoverflow.com/q/22867130/319204的方式來做些什麼你想達到什麼目的? – TheCodeArtist 2014-10-31 03:04:19