2012-09-04 26 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` 

或相似。