2010-02-12 76 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