【发布时间】:2011-01-16 08:39:32
【问题描述】:
有没有办法更改在 Linux 上运行 python 脚本的进程的名称?
当我执行ps 时,我得到的只是“python”进程名称。
【问题讨论】:
有没有办法更改在 Linux 上运行 python 脚本的进程的名称?
当我执行ps 时,我得到的只是“python”进程名称。
【问题讨论】:
有更简单的方式(您不需要导入任何库)但可能不是那么优雅。您必须不要在 shebang 行中使用“env”。
也就是说,这将在进程列表中被命名为“python”:
#!/usr/bin/env python
但这会以你的脚本名命名:
#!/usr/bin/python
因此,您可以使用 pidof -x scriptname 或 ps -C scriptname 之类的内容找到它
【讨论】:
http://code.google.com/p/procname/
示例用法:
# Lets rename:
>>> procname.setprocname('My super name')
# Lets check. Press Ctrl+Z
user@comp:~/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 命令的系统。
【讨论】:
C 扩展的额外复杂性?
undefined symbol: Py_InitModule3
procname 库在 ubuntu 上对我不起作用。我改用 setproctitle (pip install setproctitle)。这就是 gunicorn 的用途,它对我有用。
【讨论】:
可以选择执行以下操作,尽管它仅适用于 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)
【讨论】:
ps 中看到的名称,但不会更改 ps w 返回的 cmdline。