IMHO ps -u
shows a very useful output, much better than ps -u $USER
:
$ ps -u
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
elastic 234897 0.0 0.0 105980 1336 pts/2 S+ Oct10 0:00 /bin/bash ./run.sh collector-json-1.conf
elastic 234899 48.7 7.1 10087120 4433104 pts/2 Sl+ Oct10 2804:11 /usr/java/jdk1.7.0_09_x64/bin/java -Xmx6144m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatin
:
compared to
$ ps -u $USER
PID TTY TIME CMD
234897 pts/2 00:00:00 run.sh
234899 pts/2 1-22:44:04 java
:
- But, why is it "bad syntax"?
/usr/share/doc/procps-3.2.8/FAQ
doesn't help much. - What would be a "proper syntax" to achieve the exact same output?
In case it's important:
$ uname -a
Linux h22k34.local 2.6.32-042stab044.17 #1 SMP Fri Jan 13 12:53:58 MSK 2012 x86_64 x86_64 x86_64 GNU/Linux
Best Answer
The correct syntax, which returns the same output, would be:
There is a good reason why modern syntax for
ps
is a mess. Historically, there were two incompatible version ofps
. Options with a leading dash were inherited from the AT&T Unix version ofps
. Options without a leading dash were inherited from BSD. The version ofps
that Linux distributions generally use is GNU which has merged both sets of options together, as well as added its own set of options that start with a leading double-dash.Thus,
ps u
is BSD-style andps -u $USER
is AT&T-style. The fact that GNUps
allows you to runps -u
and, other than the warning, get the same output asps u
shows that GNU is attempting to make the best of a bad situation.