我想設置我的python腳本來始終使用固定的進程ID。所以每次我想殺死它時,我都不必爲它做一個ps aux。請幫忙。修復Python腳本的進程ID
我正在使用Ubuntu & CentOS。
Ubuntu是我的測試系統 CentOS是我的服務器
我想設置我的python腳本來始終使用固定的進程ID。所以每次我想殺死它時,我都不必爲它做一個ps aux。請幫忙。修復Python腳本的進程ID
我正在使用Ubuntu & CentOS。
Ubuntu是我的測試系統 CentOS是我的服務器
爲什麼不寫刪除你的過程一個小腳本:
#!/bin/sh
#Kill my python process called myPython
kill `ps -A | grep myPython | nawk '{ print $1}'`
# Or
kill `ps -U myname | grep myPython | nawk '{ print $1}'`
然後你可以運行腳本殺掉進程...
這是不可能的,Posix的進程ID被保證是隨機(例如OpenSSL
使用進程id種子它的隨機數發生器)。只有你可以做的事情是將進程ID寫入文件並根據寫入的進程ID來終止進程。
kill `cat x.pid`
你是什麼意思,保證是隨機的?我用過的所有Linux版本都只有一個跟蹤它的計數器,並且只使用下一個可用的pid作爲新的pid。運行ps | grep ps幾次,你會看到。 –
這是真的,但你不知道你的過程將得到哪個ID。 – dav1d
這不是你可以用python或任何其他進程來做的事情。
進程標識由Linux內核分配,並且可以保證標識的唯一性。此外,如果你的進程使用另一個進程的子進程,它的進程ID將駐留在內核進程表中,直到父進程已經確認它已經讀取了退出狀態爲止。這意味着你不能簡單地在稍後重新使用進程ID,它仍然可以在進程表中保留。
我敢肯定,你可以設計一個創意kill命令那會,每次趕上你的過程:
kill `ps -fC python2.7 | grep yourscriptname.py`
或相似。
究竟爲什麼做你想做的事是什麼? – 2012-09-04 09:19:26
我同意@Tichodroma--我也懷疑這是可能的。將PID寫入 .pid文件並使用它的過程的正常用法有什麼不對嗎? –