Просмотр полного вывода команды PS - PullRequest
142 голосов
/ 29 января 2010

когда я запускаю команду ps -aux на своем сервере Linux, к которому я подключился с помощью putty, немногие процессы слишком длинные, чтобы уместиться в мою текущую ширину окна. Есть ли альтернатива?

- Обновление -

Прошу прощения за понижение рейтинга, я думал, что другие тоже не найдут ответ полезным, поэтому я понизил рейтинг.

Вот информация, которую вы просили.

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

Ответы [ 11 ]

127 голосов
/ 24 января 2012

Используя флаги auxww, вы увидите полный путь к выводу как в окне терминала, так и из сценариев оболочки.

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 перечисляет все процессы, выполняемые всеми пользователями. Смотрите man ps для деталей. Флаг ww устанавливает неограниченную ширину.

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

Я нашел ответ в следующем блоге:
http://www.snowfrog.net/2010/06/10/solaris-ps-output-truncated-at-80-columns/

124 голосов
/ 29 января 2010

Скорее всего, вы используете пейджер, например less или most, поскольку вывод ps aux длиннее, чем экран.Если это так, следующие параметры вызовут (или заставят) переносить длинные строки вместо усечения.

ps aux | less -+S

ps aux | most -w

Если вы используете одну из следующих команд, строки не будут переноситься, но вы можете использоватьклавиши со стрелками или другие клавиши перемещения для прокрутки влево и вправо.

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)

Линии всегда переносятся для more и pg.

Когда ps aux используется в трубе,опция w не нужна, поскольку ps использует ширину экрана только при выводе на терминал.

97 голосов
/ 29 июля 2013

просто и идеально:

ps -efww

не будет усекать строку

51 голосов
/ 04 ноября 2014

Просто бросьте его на кошку, которая автоматически переносит строки

ps aux | cat
13 голосов
/ 29 января 2010

Если передать несколько w с, ширина экрана будет игнорироваться.

8 голосов
/ 12 мая 2017

Если вы указываете формат вывода вручную, вам также необходимо убедиться, что опция args имеет значение last в списке полей вывода, в противном случае он будет усечен.

ps -A -o args,pid,lstart дает

/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

но ps -A -o pid,lstart,args возвращает полную командную строку:

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]
7 голосов
/ 29 января 2010

вы можете установить формат вывода, например, чтобы видеть только команду и идентификатор процесса.

ps -eo pid,args

см. Справочную страницу ps для большего формата вывода. В качестве альтернативы вы можете использовать опции -w или --width n.

Если ничего не помогает, вот еще один обходной путь (только для просмотра ваших длинных cmds)

awk '{ split(FILENAME,f,"/") ; printf "%s: %s\n", f[3],$0 }' /proc/[0-9]*/cmdline
3 голосов
/ 27 декабря 2012

Извините, что опоздал на вечеринку, но только что нашел решение проблемы.

Строки обрезаются, потому что ps настаивает на использовании значения $ COLUMNS, даже если в этот момент вывод не является экраном. Что является ошибкой, ИМХО. Но легко обойти, просто сделать ps думает, что у вас суперширокий экран, т.е. установите COLUMNS в высокий уровень на время выполнения команды ps. Пример:

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

Надеюсь, это еще кому-нибудь пригодится. Все остальные идеи казались слишком сложными:)

1 голос
/ 15 июня 2016

Я нашел этот ответ, который прибил его ко мне, поскольку ни один из приведенных выше ответов не сработал

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

По сути, ядро ​​ограничивает мою строку cmd.

1 голос
/ 13 мая 2016

Если вы grep ищете команду с каналом из ps aux, она автоматически обернет текст. Я использовал множество других ответов здесь, но иногда, если вы ищете что-то конкретное, просто используйте grep, и вы знаете, что оно будет переносить строки.

Например ps aux | grep ffmpeg.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...