2012-09-04 71 views
0

我想設置我的python腳本來始終使用固定的進程ID。所以每次我想殺死它時,我都不必爲它做一個ps aux。請幫忙。修復Python腳本的進程ID

我正在使用Ubuntu & CentOS。

Ubuntu是我的測試系統 CentOS是我的服務器

+0

究竟爲什麼做你想做的事是什麼? – 2012-09-04 09:19:26

+1

我同意@Tichodroma--我也懷疑這是可能的。將PID寫入 .pid文件並使用它的過程的正常用法有什麼不對嗎? –

回答

0

爲什麼不寫刪除你的過程一個小腳本:

#!/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}'` 

然後你可以運行腳本殺掉進程...

2

這是不可能的,Posix的進程ID被保證是隨機(例如OpenSSL使用進程id種子它的隨機數發生器)。只有你可以做的事情是將進程ID寫入文件並根據寫入的進程ID來終止進程。

kill `cat x.pid` 
+1

你是什麼意思,保證是隨機的?我用過的所有Linux版本都只有一個跟蹤它的計數器,並且只使用下一個可用的pid作爲新的pid。運行ps | grep ps幾次,你會看到。 –

+0

這是真的,但你不知道你的過程將得到哪個ID。 – dav1d

2

這不是你可以用python或任何其他進程來做的事情。

進程標識由Linux內核分配,並且可以保證標識的唯一性。此外,如果你的進程使用另一個進程的子進程,它的進程ID將駐留在內核進程表中,直到父進程已經確認它已經讀取了退出狀態爲止。這意味着你不能簡單地在稍後重新使用進程ID,它仍然可以在進程表中保留。

我敢肯定,你可以設計一個創意kill命令那會,每次趕上你的過程:

kill `ps -fC python2.7 | grep yourscriptname.py` 

或相似。