更改python脚本的进程名称

更改python脚本的进程名称,python,linux,Python,Linux,有没有办法更改Linux上运行python脚本的进程的名称 当我执行ps时,我得到的只是“python”进程名。 示例用法: # 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 13

有没有办法更改Linux上运行python脚本的进程的名称

当我执行
ps
时,我得到的只是“python”进程名。

示例用法:

# 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
#让我们重命名:
>>>procname.setprocname('我的超级名称')
#让我们检查一下。按Ctrl+Z组合键
user@comp:~/procname$ps
PID TTY时间指令
13016分/2 00:00:00狂欢节

13128 pts/2 00:00:00 My super name可以选择执行以下操作,尽管它只在linux上工作(通过调用)


procname库在ubuntu上对我不起作用。我改为使用setproctitle(
pip安装setproctitle
)。这就是gunicorn使用的方法,它对我很有用。

有更简单的方法(您不需要导入任何LIB),但可能不是很优雅的方法。您必须在shebang行内不使用“env”

换句话说,这将在进程列表中命名为“python”:

#!/usr/bin/env python
但这将使用您的脚本名命名:

#!/usr/bin/python

因此,您可以使用类似于
pidof-xscriptname
ps-cscriptname

的东西找到它!有没有一种方法可以执行相同的操作,而不引起
C
扩展的额外复杂性?让我觉得,不,没有:-(在那张罚单中,他们还提到了另一个进程名称更改工具(也是C):+1:很棒的东西!谢谢!看起来这个包不再受支持了。我收到了一个导入错误
未定义的符号:Py_InitModule3
在Debian 6、x86\u 64上不起作用。在ubuntu上也不起作用:(尝试将16替换为PR_SET_名称在Ubuntu 12.04/Linux 3.1.10 x86_64上用Python 2.7成功测试。注意:它确实会更改
ps
中的名称,但不会更改
ps w
返回的cmdline。Python 3(分号表示行,因为没有多行)``libc.prctl(15,b“新名称”,无,无,无)##和检索:(我不知道是否必须用一个以上的字节初始化c_char_p,但首先分配正确的内存量似乎更为正确);proc_name=ctypes.c_char_p(b“\0”*16);libc.prctl(16,proc_name,None,None);print(proc_name.value)“``这正是我要找的。谢谢。当我们使用bash文件时,非常有效。谢谢。尽管这确实违背了使用env的目的。@christopherber“目的”无论如何,大多数使用env的人都不太理解env的含义。在我看来,这只是避免使用env作为前缀的又一个原因。这在centos 7上似乎不起作用,知道为什么吗?即使我从shell运行,我仍然可以看到python scriptname,只要使用。/scriptname.py即可
#!/usr/bin/python