Format ‘ps’ command output without whitespace

csvps

I have the following ps command to get particular properties of all the running processes along with some properties:

ps --no-headers -exo "uname,ppid,pid,etime,%cpu,%mem,args"

I wish to have it formatted in CSV so I can parse it. Note I have put the args at the end to make parsing easy; I don't think a , will exist in any of the other columns – please correct me if I am wrong.

How do I remove the whitespace?

Best Answer

From the man page:

-o format       user-defined format.
                format is a single argument in the form of a blank-separated or comma-separated list, which offers a
                way to specify individual output columns. The recognized keywords are described in the STANDARD FORMAT
                SPECIFIERS section below. Headers may be renamed (ps -o pid,ruser=RealUser -o comm=Command) as
                desired. If all column headers are empty (ps -o pid= -o comm=) then the header line will not be
                output. Column width will increase as needed for wide headers; this may be used to widen up columns
                such as WCHAN (ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm). Explicit width control
                (ps opid,wchan:42,cmd) is offered too. The behavior of ps -o pid=X,comm=Y varies with personality;
                output may be one column named "X,comm=Y" or two columns named "X" and "Y". Use multiple -o options
                when in doubt. Use the PS_FORMAT environment variable to specify a default as desired; DefSysV and
                DefBSD are macros that may be used to choose the default UNIX or BSD columns.

So try:

/bin/ps -o uname:1,ppid:1,pid:1
Related Question