|
ps command in detail Here are the possible codes when using state "$ ps -e -o state,cmd" PROCESS STATE CODES D uninterruptible sleep (usually IO) R runnable (on run queue) S sleeping T traced or stopped Z a defunct ("zombie") process < high-priority (not nice to other users) N low-priority (nice to other users) L has pages locked into memory (for real-time and custom IO) s is a session leader l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do) + is in the foreground process group For instance: Note that the -o is for user defined, and -e is for select all process. $ ps -e -o pid,state,start,time,etime,cmd ... 9946 S 15:40:45 00:00:00 02:23:29 /bin/bash -i 9985 T 15:41:24 00:00:01 02:22:50 emacs mout2 10003 T 15:43:59 00:00:00 02:20:15 emacs NOTES 10320 T 17:38:42 00:00:00 25:32 emacs stuff.c ... You may want to command below, without the -e, which will give the process only under the current terminal. $ ps -o pid,state,start,time,etime,cmd Want to find what 's impacting your load? $ ps -e -o %cpu,pid,state,start,time,etime,%cpu,%mem,cmd|sort -rn|less $ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 1380 480 ? S Aug04 0:00 init [3] root 2 0.0 0.0 0 0 ? SWN Aug04 0:00 [ksoftirqd/0] root 3 0.0 0.0 0 0 ? SW< Aug04 0:00 [events/0] root 4 0.0 0.0 0 0 ? SW< Aug04 0:00 [khelper] ... Or, if you want to see the environment add the -e option $ ps aeux ... chirico 2735 0.0 0.1 4400 1492 pts/0 S Aug04 0:00 -bash USER=chirico LOGNAME=chirico HOME=/home/chirico PATH=/usr/ chirico 2771 0.0 0.0 4328 924 pts/0 S Aug04 0:00 screen -e^Pa -D -R HOSTNAME=third-fl-71.localdomain TERM=xterm S chirico 2772 0.0 0.6 9476 6352 ? S Aug04 0:54 SCREEN -e^Pa -D -R HOSTNAME=third-fl-71.localdomain TERM=xterm S chirico 2773 0.0 0.1 4432 1548 pts/1 S Aug04 0:10 /bin/bash STY=2772.pts-0.third-fl-71 TERM=screen TERMCAP=SC|scre chirico 2797 0.0 0.1 4416 1496 pts/2 S Aug04 0:00 /bin/bash STY=2772.pts-0.third-fl-71 TERM=screen TERMCAP=SC|scre root 2821 0.0 0.0 4100 952 pts/2 S Aug04 0:00 su - root 2822 0.0 0.1 4384 1480 pts/2 S Aug04 0:00 -bash chirico 2862 0.0 0.1 4428 1524 pts/3 S Aug04 0:00 /bin/bash STY=2772.pts-0.third-fl-71 TERM=screen TERMCAP=SC|scre sporkey 2946 0.0 0.2 6836 2960 ? S Aug04 0:15 fetchmail chirico 2952 0.0 0.1 4436 1552 pts/5 S Aug04 0:00 /bin/bash STY=2772.pts-0.third-fl-71 TERM=screen TERMCAP=SC|scre chirico 3880 0.0 0.1 4416 1496 pts/6 S Aug05 0:00 /bin/bash STY=2772.pts-0.third-fl-71 TERM=screen TERMCAP=SC|scre root 3904 0.0 0.0 4100 956 pts/6 S Aug05 0:00 su - donkey donkey 3905 0.0 0.1 4336 1452 pts/6 S Aug05 0:00 -bash donkey 3938 0.0 0.2 6732 2856 ? S Aug05 0:14 fetchmail chirico 3944 0.0 0.1 4416 1496 pts/7 S Aug05 0:00 /bin/bash STY=2772.pts-0.third-fl-71 TERM=screen TERMCAP=SC|scre ... There is also a -f "forrest" option. Also note below " -bash" is the start of a login shell. $ ps aeuxwwf The ww option above gives a wide format with all variables. Use the above command if you plan to parse through a Perl script. Otherwise, it may be easier to do a quick read using the command below, without "ww". $ ps aeuxf ... root 2339 0.0 0.1 3512 1444 ? S Dec01 0:00 /usr/sbin/sshd root 25651 0.0 0.1 6764 1980 ? S Dec23 0:00 \_ /usr/sbin/sshd chirico 25653 0.0 0.2 6840 2236 ? S Dec23 0:14 \_ /usr/sbin/sshd chirico 25654 0.0 0.1 4364 1440 pts/4 S Dec23 0:00 \_ -bash USER=chirico LOGNAME=chirico HOME=/home/chirico chirico 25690 0.0 0.0 4328 920 pts/4 S Dec23 0:00 \_ screen -e^Pa -D -R HOSTNAME=third-fl-71.localdomain TERM=xterm root 2355 0.0 0.0 2068 904 ? S Dec01 0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid ... It is also possible to list the process by command line. For example, the following command will only list the emacs processes. $ ps -fC emacs UID PID PPID C STIME TTY TIME CMD chirico 5049 5020 0 May11 pts/13 00:00:00 emacs -nw Notes chirico 12368 5104 0 May12 pts/18 00:00:00 emacs -nw dnotify.c chirico 19792 18028 0 May13 pts/20 00:00:00 emacs -nw hello.c chirico 14034 27367 0 18:52 pts/8 00:00:00 emacs -nw How_to_Linux_and_Open_Source.txt You may also want to consider using top in batch mode. Here the "-n 1" means refresh once, and the "b" is for batch. The "fmt -s" is to put it in a more readable format. $ top -n 1 b |fmt -s >>statfile
|