[英]determine how a linux process was invoked
linux 中有没有办法确定如何调用进程? 我知道, ps
显示启动参数,但我对进程启动的执行方式感兴趣。
它是init.d
脚本、 cron job
还是通过 cli 手动调用。 现在我正在手动查看所有配置/命令,有没有一种简单的方法可以忽略?
(我也知道, systemd
等的存在与发行版相关,这有助于优先考虑。)
在大多数情况下,对于 pid 1234 的进程,您可以通过/proc/1234/
获取有关它的有价值信息(有关详细信息,请参阅proc(5) )
另请参见凭据(7)和Advanced Linux Programming和Linux From Scratch
例如,在终端中尝试ps $$
然后cat /proc/$$/status
然后cat /proc/$$/maps
然后 cat / proc / $$ cat /proc/$$/comm
考虑编写您的 C 程序执行适当的系统调用(2) (可能使用opendir(3)和readdir(3) ...)以从/proc/
... 查询该信息。
记得阅读errno(3) 。 许多函数(如open(2) 、 read(2) 、 getpwnam(3) ....)可能会失败。
Download, then study for inspiration the source code of the GNU bash shell (or even of the Linux kernel ), it is free software .
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.