如何获取UNIX进程的命令行?


Answers:


10

ps ax显示所有正在运行的进程的命令行; 你可以为你想要的pid grep。


@ mark4o或者只是ps awux | cat,因为ps -w不会限制输出不是标准输出时要显示的列数,例如当管道输出到另一个命令时。
jtimberman

1
为什么每周都会发生这种情况?“警告:糟糕的ps语法,可能是假的' - '参见procps.sf.net/faq.html ”和“请注意”ps -aux“与”ps aux“不同.POSIX和UNIX标准要求” ps -aux“打印名为”x“的用户拥有的所有进程,以及打印将由-a选项选择的所有进程。如果名为”x“的用户不存在,则此ps可能会将该命令解释为“ps aux”代替并打印警告。此行为旨在帮助过渡旧脚本和习惯。它很脆弱,可能会发生变化,因此不应该依赖它。“
Hello71 2011年

我不知道,Hello71。我为你纠正了我两岁的答案。
Bkkbrad 2011年

4

请问:

~$ ps ax | grep "ntp"
   57   ??  Ss     0:04.66 /usr/sbin/ntpd -c /private/etc/ntp.conf -n
 3104 s000  S+     0:00.00 grep ntp

做你需要的(将ntp更改为你感兴趣的程序)?这通常会给我运行进程的命令行参数(例如,我用来检查Launchd在运行系统守护进程时使用了什么)。


2

cat /proc/$PROCESSNUMBER/cmdline | tr '\0' '\n'

虽然它是特定于Linux的,但是它$PROCESSNUMBER从内核(/proc/$PROCESSNUMBER/cmdline部分)直接编写进程命令行,并通过将tr -token\ 0转换(换成)到新行(\ n)将每个参数放在一个单独的行上使其可读。

只有ps -ef在$ PROCESSNUMBER部分中放置一个正在运行的进程的实际进程数(可以通过运行命令找到一个)时,此行才有效!


3
原始海报要求Mac OS X(开箱即用没有procfs
Andre Holzner

2
或者xargs -0 < /proc/PID/cmdline
Bash
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.