使用ps aux,过程11558和16290的括号中有它们的路径:“(dd)”和“(security_authra)”。这些是什么?

问题描述:

我目前在Mac上并没有能够在另一台Mac上尝试它,所以我不确定是否确切的进程号码会改变。我写了一个C程序,它给了我处理列表,它正在绊倒这两个,并且正在返回''?代替。我使用命令行命令ps aux列出了我系统上的所有进程,与其他进程不同,进程11558和16290的括号中都有它们的路径,并且非常奇特。这里发生了什么?什么是路径(dd)和(security_authra)?有没有一种方法可以访问“实际”路径?使用ps aux,过程11558和16290的括号中有它们的路径:“(dd)”和“(security_authra)”。这些是什么?

谢谢

当进程更改其命令行参数时会发生这种情况。例如我的系统上我有这样的过程:

$ ps aux -q 1478 
USER  PID %CPU %MEM VSZ RSS TTY  STAT START TIME COMMAND 
rich  1478 0.0 0.0 99208 3340 ?  S 19:14 0:00 (sd-pam) 

ps只是报告的命令行参数/proc

$ strings /proc/1478/cmdline 
(sd-pam) 

然而,它仍然可以发现该进程正在运行的可执行文件:

$ sudo ls -l /proc/1478/exe 
lrwxrwxrwx. 1 root root 0 Jun 5 16:19 /proc/1478/exe -> /usr/lib/systemd/systemd 
+0

你是什么意思通过改变它的命令行参数?为什么会改变/隐藏路径? – lelephantt

+0

@lelephantt命令行参数作为字符串数组存储在内存中。该数组可以更改。看到这个问题,例如:https://*.com/questions/963493/is-it-possible-to-change-argv-or-do-i-need-to-create-an-adjusted-copy-of-它或看到systemd的方式:https://github.com/systemd/systemd/blob/3e7d14d78c4d15ec7789299216cbf5c58e61547b/src/basic/process-util.c#L278 –