"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 в действительности аналогичен приведенному выше примеру.