211

when I run ps -aux command on my linux server, to which I connected using putty, few processes are too long to fit in my current window width. Is there an alternative?

-- Update --

I am sorry for downgrading,I thought others won't find the answer useful too, so I downgraded.

Here is the info you asked for.

hadoop-user@hadoop-desk:~$ echo $TERM
xterm

hadoop-user@hadoop-desk:~$ stty -a
speed 38400 baud; rows 47; columns 158; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

hadoop-user@hadoop-desk:~$ echo $COLUMNS
158
3
  • 1
    As an aside, you have provided very little information, so you shouldn't go about downvoting all the answers you've got so far. We are trying to help you. You should post the output of echo $TERM, stty -a, and echo $COLUMNS in your question. Commented Jan 29, 2010 at 5:18
  • Try stty ocrnl and/or stty sane? Commented Jan 29, 2010 at 5:38
  • 47
    ps axuww That's the answer ;) At least for me. The doubled ww did it.
    – brutuscat
    Commented Jan 30, 2012 at 19:35

14 Answers 14

201

Using the auxww flags, you will see the full path to output in both your terminal window and from shell scripts.

darragh@darraghserver ~ $uname -a
SunOS darraghserver 5.10 Generic_142901-13 i86pc i386 i86pc

darragh@darraghserver ~ $which ps
/usr/bin/ps<br>

darragh@darraghserver ~ $/usr/ucb/ps auxww | grep ps
darragh 13680  0.0  0.0 3872 3152 pts/1    O 14:39:32  0:00 /usr/ucb/ps -auxww
darragh 13681  0.0  0.0 1420  852 pts/1    S 14:39:32  0:00 grep ps

ps aux lists all processes executed by all users. See man ps for details. The ww flag sets unlimited width.

-w         Wide output. Use this option twice for unlimited width.
w          Wide output. Use this option twice for unlimited width.

I found the answer on the following blog:
http://www.snowfrog.net/2010/06/10/solaris-ps-output-truncated-at-80-columns/

2
  • 13
    This is a better answer than the current accepted solution because not all systems (embedded linux) include 'most', 'more' or 'less' pagers.
    – Frak
    Commented Oct 21, 2016 at 15:13
  • 2
    or, ps auxf > ps.log
    – Marslo
    Commented May 14, 2018 at 9:10
167

It is likely that you're using a pager such as less or most since the output of ps aux is longer than a screenful. If so, the following options will cause (or force) long lines to wrap instead of being truncated.

ps aux | less -+S

ps aux | most -w

If you use either of the following commands, lines won't be wrapped but you can use your arrow keys or other movement keys to scroll left and right.

ps aux | less -S    # use arrow keys, or Esc-( and Esc-), or Alt-( and Alt-) 

ps aux | most       # use arrow keys, or < and > (Tab can also be used to scroll right)

Lines are always wrapped for more and pg.

When ps aux is used in a pipe, the w option is unnecessary since ps only uses screen width when output is to the terminal.

13
  • 23
    Please note that in Linux there is still a limit of 4096 characters hard-coded in kernel code: see stackoverflow.com/questions/199130/… Commented Dec 13, 2013 at 14:00
  • @DennisWilliamson Your statement about w not being needed when using a pipe seems to be system-dependent. On both openSUSE Leap 15.0 and Ubuntu 18.04, commands like ps aux | grep <something> act on the output of ps truncated by the terminal width.
    – pkeller
    Commented Jan 21, 2019 at 16:44
  • @DennisWilliamson - Why the argument -S+? What is the difference between -S+ and -w?
    – Motivated
    Commented Jan 28, 2019 at 5:12
  • @Motivated: There's no relationship between -+S and -w for less - they are completely different options. If you're asking about the two different pagers, less and most (completely independent from each other), the option -+S for less works similarly to the -w option for most - they both cause long lines to wrap at the edge of the screen instead of being truncated or scrolled. Further explanation for less: -+ "resets the option to its default setting" so -S chops long lines and -+S wraps them. See man less for more information. Commented Jan 28, 2019 at 5:29
  • @DennisWilliamson - Thanks I did read man less however don't see the argument -+S described. It's limited to -S.
    – Motivated
    Commented Jan 28, 2019 at 5:38
147

simple and perfect:

ps -efww

won't truncate line

1
  • 9
    This is the "ww" part that is responsible for the full output"
    – user5479362
    Commented Apr 19, 2018 at 10:53
82

Just throw it on cat, which line-wraps automatically

ps aux | cat
3
  • 1
    you can elaborate, a but more.
    – MZaragoza
    Commented Nov 4, 2014 at 18:51
  • 12
    Good solution for lightweight linux distributions like BusyBox, where advanced tools are not avaliable :)
    – Lion
    Commented Jun 16, 2017 at 12:14
  • Very very simple. cat command is on every nix box out there.
    – akahunahi
    Commented Jun 14, 2018 at 22:58
18

Passing it a few ws will ignore the display width.

3
  • Did you try adding more than one? Commented Jan 29, 2010 at 4:39
  • I tried adding more than 5..but somehow it doesn't show the complete command.
    – Boolean
    Commented Jan 29, 2010 at 4:48
  • 1
    Once you get to 3 you're seeing all that there is. Nothing beyond what it shows there is visible to any program. You have a different problem. Commented Jan 29, 2010 at 4:50
15

If you are specifying the output format manually you also need to make sure the args option is last in the list of output fields, otherwise it will be truncated.

ps -A -o args,pid,lstart gives

/usr/lib/postgresql/9.5/bin 29900 Thu May 11 10:41:59 2017
postgres: checkpointer proc 29902 Thu May 11 10:41:59 2017
postgres: writer process    29903 Thu May 11 10:41:59 2017
postgres: wal writer proces 29904 Thu May 11 10:41:59 2017
postgres: autovacuum launch 29905 Thu May 11 10:41:59 2017
postgres: stats collector p 29906 Thu May 11 10:41:59 2017
[kworker/2:0]               30188 Fri May 12 09:20:17 2017
/usr/lib/upower/upowerd     30651 Mon May  8 09:57:58 2017
/usr/sbin/apache2 -k start  31288 Fri May 12 07:35:01 2017
/usr/sbin/apache2 -k start  31289 Fri May 12 07:35:01 2017
/sbin/rpc.statd --no-notify 31635 Mon May  8 09:49:12 2017
/sbin/rpcbind -f -w         31637 Mon May  8 09:49:12 2017
[nfsiod]                    31645 Mon May  8 09:49:12 2017
[kworker/1:0]               31801 Fri May 12 09:49:15 2017
[kworker/u16:0]             32658 Fri May 12 11:00:51 2017

but ps -A -o pid,lstart,args gets you the full command line:

29900 Thu May 11 10:41:59 2017 /usr/lib/postgresql/9.5/bin/postgres -D /tmp/4493-d849-dc76-9215 -p 38103
29902 Thu May 11 10:41:59 2017 postgres: checkpointer process   
29903 Thu May 11 10:41:59 2017 postgres: writer process   
29904 Thu May 11 10:41:59 2017 postgres: wal writer process   
29905 Thu May 11 10:41:59 2017 postgres: autovacuum launcher process   
29906 Thu May 11 10:41:59 2017 postgres: stats collector process   
30188 Fri May 12 09:20:17 2017 [kworker/2:0]
30651 Mon May  8 09:57:58 2017 /usr/lib/upower/upowerd
31288 Fri May 12 07:35:01 2017 /usr/sbin/apache2 -k start
31289 Fri May 12 07:35:01 2017 /usr/sbin/apache2 -k start
31635 Mon May  8 09:49:12 2017 /sbin/rpc.statd --no-notify
31637 Mon May  8 09:49:12 2017 /sbin/rpcbind -f -w
31645 Mon May  8 09:49:12 2017 [nfsiod]
31801 Fri May 12 09:49:15 2017 [kworker/1:0]
32658 Fri May 12 11:00:51 2017 [kworker/u16:0]
1
  • > make sure the args option is last in the list of output fields, otherwise it will be truncated. Exactly what I needed. Thank you!
    – ffledgling
    Commented Jul 15, 2021 at 21:52
9

you can set output format,eg to see only the command and the process id.

ps -eo pid,args

see the man page of ps for more output format. alternatively, you can use the -w or --width n options.

If all else fails, here's another workaround, (just to see your long cmds)

awk '{ split(FILENAME,f,"/") ; printf "%s: %s\n", f[3],$0 }' /proc/[0-9]*/cmdline
1
  • 1
    change the order and try again, pid,args
    – ghostdog74
    Commented Jan 29, 2010 at 4:44
4

Sorry to be late to the party but just found this solution to the problem.

The lines are truncated because ps insists on using the value of $COLUMNS, even if the output is not the screen at that moment. Which is a bug, IMHO. But easy to work around, just make ps think you have a superwide screen, i.e. set COLUMNS high for the duration of the ps command. An example:

$ ps -edalf                 # truncates lines to screen width
$ COLUMNS=1000 ps -edalf    # wraps lines regardless of screen width

I hope this is still useful to someone. All the other ideas seemed much too complicated :)

2

Evidence for truncation mentioned by others, (a personal example)

foo=$(ps -p 689 -o command); echo "$foo"

COMMAND
/opt/conda/bin/python -m ipykernel_launcher -f /root/.local/share/jupyter/runtime/kernel-5732db1a-d484-4a58-9d67-de6ef5ac721b.json

That ^^ captures that long output in a variable As opposed to

ps -p 689 -o command

COMMAND
/opt/conda/bin/python -m ipykernel_launcher -f /root/.local/share/jupyter/runtim

Since I was trying this from a Docker jupyter notebook, I needed to run this with the bang of course ..

!foo=$(ps -p 689 -o command); echo "$foo"

Surprisingly jupyter notebooks let you execute even that! But glad to help find the offending notebook taking up all my memory =D

1

If none of the solutions above work, the output of ps isn't your problem. Maybe you need to set putty to wrap long lines?

Otherwise, we need more information.

1
  • Oh well. There is something weird going on. Commented Jan 29, 2010 at 5:12
1

If you grep the command that you are looking for with a pipe from ps aux, it will wrap the text automatically. I used a lot of the other answers on here, but sometimes if you are looking for something specific, it is nice to just use grep and you know that it will wrap lines.

For instance ps aux | grep ffmpeg .

1

I found this answer which is what nailed it for me as none of the above answers worked

https://unix.stackexchange.com/questions/91561/ps-full-command-is-too-long

Basically, the kernel is limiting my cmd line.

0

None of the above worked for me in a docker container with busybox. What I use is:

$ cat /proc/<PID>/cmdline | tr \\0 ' '
0

Just ps ww or ps -ww

e.g., execute pa auxww or ps aux -ww rather than execute ps aux

Source:

OUTPUT FORMAT CONTROL
w      Wide output.  Use this option twice for unlimited width.
-w     Wide output.  Use this option twice for unlimited width.

Not the answer you're looking for? Browse other questions tagged or ask your own question.