Просмотр полного вывода команды PS
когда я запускаю команду ps -aux
на моем Linux-сервере, к которой я подключался с помощью шпатлевки, несколько процессов слишком длинны, чтобы соответствовать моей текущей ширине окна. Есть ли альтернатива?
- Обновление -
Прошу прощения за понижение, я думал, что другие тоже не найдут ответ полезным, поэтому я понизил рейтинг.
Вот информация, которую вы просили.
[email protected]:~$ echo $TERM
xterm
[email protected]:~$ 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
[email protected]:~$ echo $COLUMNS
158
Ответы
Ответ 1
Вероятно, вы используете пейджер, например 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
использует только ширину экрана, когда вывод относится к терминалу.
Ответ 2
Используя флаги auxww
, вы увидите полный путь для вывода как в окне терминала, так и в сценариях оболочки.
[email protected] ~ $uname -a
SunOS darraghserver 5.10 Generic_142901-13 i86pc i386 i86pc
[email protected] ~ $which ps
/usr/bin/ps<br>
[email protected] ~ $/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/
Ответ 3
простой и совершенный:
ps -efww
не будет обрезать строку
Ответ 4
Просто бросьте его на cat, который автоматически обматывает
ps aux | cat
Ответ 5
При пропуске несколько w
будут игнорировать ширину отображения.
Ответ 6
вы можете установить выходной формат, например, чтобы увидеть только команду и идентификатор процесса.
ps -eo pid,args
см. справочную страницу ps для получения большего формата вывода. В качестве альтернативы вы можете использовать опции -w
или --width n
.
Если все остальное не удается, вот еще один способ обхода (просто чтобы увидеть ваши длинные cmds)
awk '{ split(FILENAME,f,"/") ; printf "%s: %s\n", f[3],$0 }' /proc/[0-9]*/cmdline
Ответ 7
Извините, что опоздал на вечеринку, но нашел это решение проблемы.
Линии усекаются, потому что ps настаивает на использовании значения $COLUMNS, даже если выход не является экраном в этот момент. Это ошибка, ИМХО. Но легко работать, просто
ps думает, что у вас есть суперсерийный экран, т.е. установите COLUMNS на высокий уровень для команды ps. Пример:
$ ps -edalf # truncates lines to screen width
$ COLUMNS=1000 ps -edalf # wraps lines regardless of screen width
Я надеюсь, что это все еще полезно кому-то. Все остальные идеи казались слишком сложными:)
Ответ 8
Если вы указываете формат вывода вручную, вам также необходимо убедиться, что параметр args
является последним в списке полей вывода, иначе он будет усечен.
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]
Ответ 9
Если ни одно из вышеперечисленных решений не работает, вывод ps
не является вашей проблемой. Возможно, вам нужно установить putty на завернуть длинные строки?
В противном случае нам нужна дополнительная информация.
Ответ 10
Если вы grep
команду, которую ищете с помощью pipe от ps aux, она автоматически обернет текст. Я использовал много других ответов здесь, но иногда, если вы ищете что-то конкретное, хорошо просто использовать grep
, и вы знаете, что он будет обертывать строки.
Например ps aux | grep ffmpeg
.
Ответ 11
Я нашел этот ответ, и это то, что прибило его для меня, поскольку ни один из вышеперечисленных ответов не работал
https://unix.stackexchange.com/info/91561/ps-full-command-is-too-long
В принципе, ядро ограничивает мою строку cmd.