"ps -ew" не будет отображать широкий вывод
Он показывает только первые 15 символов из /proc/pid/stat. Но "ps -w pid" показывает широкий вывод. Зачем? Это ошибка? Благодарю.
4 ответа
Вы можете сделать это, явно перечислив поля:
ps -ew -o pid,tty,time,cmd
Или в стиле BSD:
ps awxo pid,tty,time,cmd
Вероятно, полезно в сценарии, не очень полезно для командной строки. Если вы не сделаете псевдоним.
Я не думаю, что "широкий вывод" означает то, что вы хотите. Я создал скрипт с именем foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo.sh
и получите следующее
$ ps -w
27848 pts/3 00:00:00 foo_foo_foo_foo
$ ps a
27848 pts/3 S 0:00 /bin/bash ./foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo.sh
$ ps -f
username 28049 26422 0 09:48 pts/3 00:00:00 /bin/bash ./foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo.sh
Единственная вещь w
а также -w
Похоже, это позволяет переносить строки, если я уменьшу окно, чтобы оно не помещалось на линию:
$ ps w
28429 pts/3 S 0:00 /bin/bash ./foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_fo
o_foo_foo.sh
Пытаться ps -efww
,
В Debian/Ubuntu это дает вам:
-w Wide output. Use this option twice for unlimited width.
Спасибо за все комментарии выше, которые просвещают меня.
ps -ew
не содержит параметров BSD, поэтому я получаю вывод по умолчанию, который получает имя процесса из /proc/<pid>/stat
, что не более 15 символов.
-w
опция действительно действует, она показывает широкий вывод. Если я уменьшу окно очень узко, ps -ew
постараюсь обернуть строки так, чтобы я все еще получил полные 15 символов в столбце COMMAND. Но без -w
, лайк ps -e
длинных линий не видно, но они все еще там, так как я не могу их видеть, но могу grep
их.
В терминале из 35 столбцов (некоторые выходные данные пропущены):
$ /bin/ps -e
PID TTY TIME CMD
22125 ? 00:00:00 telepathy-s
22127 ? 00:00:00 telepathy-g
$ /bin/ps -e | grep gabbl
22127 ? 00:00:00 telepathy-gabbl
По состоянию на ps -w <pid>
Я нахожу ответ от parser.c
из исходного кода procps. Это подразумевает вывод в стиле BSD, если есть аргументы PID, чего не сказано на странице man:
if((tmp>='0') && (tmp<='9')) return ARG_PID;
......
case ARG_PID:
prefer_bsd_defaults = 1;
err = parse_trailing_pids();
Так ps -w <pid>
отобразит вывод в стиле BSD, в котором вместо имени исполняемого файла (CMD) будут отображаться аргументы команды (COMMAND). -w
в действительности аналогичен приведенному выше примеру.