How to get command line of UNIX process?

18,213

Solution 1

ps ax shows you the command line of all running processes; you can grep for the pid you want.

Solution 2

Does:

~$ 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

do what you need it to (change ntp to the program you are interested in)? This usually gives me the command-line arguments of running processes (I use to check what Launchd used when running a system daemon for example).

Solution 3

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

Allthough it's Linux specific, it gets the commandline of process numbered $PROCESSNUMBER straight from the kernel (the /proc/$PROCESSNUMBER/cmdline part) and makes it readable by putting each argument on a separate line by translating (with tr -token replace) the \0's into newlines (\n).

This line only works if you put a real processnumber of a running process (you can find one by running the command ps -ef) in the $PROCESSNUMBER part!

Share:
18,213

Related videos on Youtube

user7656
Author by

user7656

Updated on September 17, 2022

Comments

  • user7656
    user7656 over 1 year

    Is it possible to grab the command line that was used to invoke a process on Mac OS X?

    • yar
      yar almost 13 years
      ps --pid $PID -o args= That's what I use, anyway...
    • Nate
      Nate about 11 years
      The Mac equivalent of that command is: ps -p <pid> -o args=
    • Jose Alban
      Jose Alban almost 7 years
      if "-o args=" truncates the output, you can try ps -p <pid> -o command=
  • JJ_Australia
    JJ_Australia almost 13 years
    Why does this happen every week? "Warning: bad ps syntax, perhaps a bogus '-'? See procps.sf.net/faq.html" and "Note that "ps -aux" is distinct from "ps aux". The POSIX and UNIX standards require that "ps -aux" print all processes owned by a user named "x", as well as printing all processes that would be selected by the -a option. If the user named "x" does not exist, this ps may interpret the command as "ps aux" instead and print a warning. This behavior is intended to aid in transitioning old scripts and habits. It is fragile, subject to change, and thus should not be relied upon."
  • Bkkbrad
    Bkkbrad almost 13 years
    I don't know, Hello71. I corrected my two-year-old answer for you.
  • Andre Holzner
    Andre Holzner about 12 years
    The original poster asked for Mac OS X (which out of the box does not have procfs)
  • Bash
    Bash over 11 years
    Or xargs -0 < /proc/PID/cmdline