Script-friendly (parseble) ps(1) output?

Peter fbsdq at
Fri Oct 31 10:57:30 PDT 2008

>I need to write a cgi script which will print the output from ps(1) in
>a table (html), so the average-operator can click on a KILL link and
>the cgi will send the selected signal.
>I need to add one ps information per column in a table (html),
>however, I found ps(1) output to be too hard to parse. There is no
>separator. I believed \t was the separator but its not.
>The ps(1) command I need to use is:
>ps -ax -o pid -o user -o emul -o lstart -o lockname -o stat -o command
>Since many of those args use [:space:] in the output, I can not use
>[:space:] as a separator.
>Sadly, `-o fiend='value'` will only format the HEADER output, not the

>Ive got no clue what to do, can someone enlight me?

>Thank you all in advance.

>Eduardo Meyer
>pessoal: dudu.meyer at
>profissional: ddm.farmaciap at

Here is something simple, and you can wrap the HTML around it...;

poshta:$ps axuww | while read USER PID CPU MEM VSZ RSS TT STAT STARTED
TIME COMMAND; do echo $PID $CPU $USER $COMMAND;done |head -3
11 89.6 root [idle]
5127 2.9 qscand spamd child (perl5.8.8)

the read ignores all white space...the last variable in that 'while read' 
will hold everything beyond it...
poshta:$ps axuww| while read USER PID CPU MEM VSZ RSS TT STAT STARTED
TIME; do echo $PID $CPU $USER $TIME;done |head -3
11 77.9 root 138080:11.91 [idle]
13607 5.0 qscand 0:09.12 spamd child (perl5.8.8)



More information about the freebsd-stable mailing list