Ubuntu(linux一般)如何更改后台进程的名称?

时间:2017-10-23 04:44:47

标签: php linux process

当我们从命令行运行“top”命令时,我们可以看到进程,在COMMAND列下我们看到一个通用名称。 对于e,g如果我在后台运行php进程,如

/usr/bin/php /path/to/myscript.php &

当我运行php时,我在COMMAND列下看到了top

有没有办法在运行后更改后台进程的名称?

*这个问题是特定于PHP的。

1 个答案:

答案 0 :(得分:-2)

进程实际上没有名称,它有一个pid(类型pid_t是一个整数,fork(2)或相关系统调用的结果)。阅读credentials(7)

显示的php名称是正确的名称,它是execve(2)作为索引0的第一个参数的名称,它是程序名称。内核不直接运行你的PHP脚本,它正在运行php解释器,它将作为输入你的脚本(所以运行的实际程序是php )。并且您的shell命令显式给出/usr/bin/php作为程序名称。您可以使用strace(1)来检查。

您的shell正在显示(jobs -lbackground processes。所以你可以编写自己的shell来以不同的方式显示它们。

也许你可以在C中编写一些包装ELF可执行文件,它可以执行相应的execve(2)

我不确定这是值得的麻烦。另请参阅proc(5)以了解应用程序(如shell,pstop)如何查询内核的进程(使用/proc/文件系统)。

melopmane所述,请同时查看prctl(2)PR_SET_NAME (我从来没用过)。但是我使用pthread_setname_np(3)来关注线程

(但是,我认为在您的案例中值得麻烦;使用名为php的PHP流程有什么问题?)

另请参阅setproctitle,或在C中编写一些PHP extension来做到这一点......

但是你不应该在意!我甚至认为改变你的进程名称会使混淆到sysadmin。他想知道这是一些PHP的东西。所以,即使你可以滥用你的系统管理员,你也不应该这样做。

BTW,您可以使用cat /proc/1234/maps之类的命令(使用您的进程的实际pid替换1234)来检查(使用proc(5) ...)PHP解释器是您{的重要部分{ {3}}(因此没有理由"隐藏" php,你可以找到你的特定php进程(如果你有很多)同时使用virtual address space