2010-02-12 79 views

回答

15

http://code.google.com/p/procname/

使用范例:

# Lets rename:  
>>> procname.setprocname('My super name')  

# Lets check. Press Ctrl+Z  
[email protected]:~/procname$ ps 

    PID TTY TIME CMD 

13016 pts/2 00:00:00 bash 

13128 pts/2 00:00:00 My super name <-- it's here 

其中prctl系统调用存在并支持PR_SET_NAME命令它只会在系统上运行。

+1

整洁!是否有一种方法可以执行相同的操作**而不会导致额外的'C'扩展的复杂性? – jldupont 2010-02-12 22:13:16

+0

http://bugs.python.org/issue5672让我觉得,不,没有:-( – bernie 2010-02-12 22:15:12

+2

在那张票,他们还提到另一个进程名称更改工具(也在C):http:// code.google.com/p/py-setproctitle/source/browse/tools/ – bernie 2010-02-12 22:17:57

8

有执行以下操作的选项,但它只能在Linux上(与prctl(2)调用)

if sys.platform == 'linux2': 
    import ctypes 
    libc = ctypes.cdll.LoadLibrary('libc.so.6') 
    libc.prctl(15, 'My Simple App', 0, 0, 0) 
+0

无法正常工作Debian 6,x86_64。 – Hongli 2013-03-07 13:08:12

+0

既不能在ubuntu上工作:( – 2013-07-25 14:35:46

+0

尝试用PR_SET_NAME替换16 – Dan 2013-07-25 16:24:21

4

的PROCNAME库并没有为我在Ubuntu上运行。我用setproctitle代替(pip install setproctitle)。这是gunicorn使用的,它为我工作。

11

简单(你不需要导入任何库),但可能不是那么优雅的方式。你必须在shebang行内不使用“env”。

换句话说,这将被命名为在进程列表“蟒蛇”:

#!/usr/bin/env python 

但是,这将与您的脚本名称被命名为:

#!/usr/bin/python 

所以,你就可以找到它像pidof -x scriptnameps -C scriptname

+1

This正是我在寻找的。谢谢 – user1061392 2015-06-02 23:01:54

+0

当我们使用bash文件的时候很有效,谢谢。 – dlopezgonzalez 2015-11-04 13:35:15