Getting full path of executables in 'ps auxwww' output
Solution 1
Try this instead:
ps ax -o pid,cmd
You can reformat it as you wish (read the man page for details).
Finally, I think that ps (and even cat /proc/*/cmdline) will report the command the way it was launched. So if no full path was given, it will appear as just "command" instead of "/path/to/command".
Solution 2
Firstly, processes can change the title reported by ps
, so it's not very reliable in itself. You could try the environment variables using the 'e' flag.
ps auxwwwe
Within these should be a builtin '_' variable as described here.
For every command that is run as a child of the shell, sh sets this variable to the full path name of the executable file and passes this value through the environment to that child process.
This holds true for sh
on BSD as it does Linux. I believe that this can't overwritten by the user. However, its availability may depend on the user's choice of shell, it's pretty nasty and your mileage may vary.
OS X doesn't have a native procfs. There is a port based upon FUSE. Details can be found here. Again, your mileage may vary.
Related videos on Youtube
knorv
Updated on September 17, 2022Comments
-
knorv almost 2 years
Consider the following lines from a
"ps auxwww"
output:USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND root 4262 0.0 0,1 76592 1104 s005 Ss 10:02am 0:00.03 login -pf yo yo 4263 0.0 0,0 75964 956 s005 S 10:02am 0:00.03 -bash
How do I force ps to expand all commands in the COMMAND column to their fully qualified path names? I want login to be resolved to /usr/bin/login and Bash to /bin/bash.
Is there an equivalent to procfs in Mac OS X? That is - is there a file-based mechanism to easily obtain process information?
-
Dan Carley almost 15 yearsCheck question #2 about procfs.
-
Dennis Williamson almost 15 yearsEwwww !
-
Denys almost 15 yearsClose! On OS X and FreeBSD (and probably other BSD-based systems) it's "ps axwww -o pid,command".
-
Mike Holdsworth over 3 yearsThis does not display the fully qualified path name (in all cases), only how it was launched. For example, if the Python 3 interpreter was launched as
python3
in a terminal window and its PID was 5981, thencat /proc/5981/cmdline
would displaypython3
. -
Mike Holdsworth over 3 yearsThe (last) link is broken (404). (However, the OP has left the building.)
-
Mike Holdsworth over 3 yearsSample output of
ls -l /proc/5981/exe
is:lrwxrwxrwx 1 embo embo 0 Nov 20 05:25 /proc/5981/exe -> /usr/bin/python3.8