Просмотр полных команд в выводе ps

17

При запуске psс -fпараметром в PuTTY (чтобы увидеть команду, соответствующую каждому процессу), строки, которые длиннее, чем ширина терминала, не видны полностью (они не переносятся на несколько строк).

Как заставить перенос строки, чтобы я мог видеть полные команды (на нескольких строках, если необходимо) при запуске ps -f?

sdabet
источник
Не ответ, но если я запускаю ps -f в эмулированном терминальном терминале, вывод переносится в несколько строк. Какой терминал вы используете?
МэтьюРок
1
Это может быть дубликатом: stackoverflow.com/questions/2159860/…
tommygun
@ MatthewRock Я использую PuTTy здесь, как вы думаете, это конкретно для него?
Сдабет
1
@Tonsenson не может закрываться как дубликат между сайтами.
Муру
1
@fiddler ах, мы не можем перенести старые вопросы без вмешательства модератора, и даже тогда это не рекомендуется: meta.stackexchange.com/questions/8004/…
muru

Ответы:

16

Если у вас есть psреализация, соответствующая POSIX , вы можете попробовать

ps -f | more

Обратите внимание, что мы недавно изменили поведение, и если у вас есть реализация, которая следует за выпуском 7 tc2 POSIX, вы можете попробовать:

ps -wwf | more

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

Шили
источник
1
ps -wwfработает просто отлично.
Сдабет
8

Возможно, я нашел ответ на ваш вопрос о переполнении стека . По словам Денниса Уильямсона :

Вполне вероятно, что вы используете пейджер типа «меньше» или «большинство», поскольку вывод команды ps aux длиннее, чем экран. Если это так, следующие параметры вызовут (или заставят) переносить длинные строки, а не обрезать их.

ps aux | less -+S

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

ps aux | less -S # используйте клавиши со стрелками, или Esc+ (и Esc+ ), или Alt+ (и Alt+)

ps aux | most # используйте клавиши со стрелками или <и >(Tab также можно использовать для прокрутки вправо) Строки всегда переносятся для more и pg.

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

(Примечание: это относится к не встроенному Linux, psутилита в других вариантах Unix может работать по-другому.)

TommyGun
источник
@ Муру, надеюсь, теперь это выглядит лучше. Спасибо, что все прояснили!
Томмигун
И извините за причинение беспорядка.
МэтьюРок
1
Ваш ответ относится только к , /usr/ucb/psи даже с помощью этой программы вы должны были бы wwв /usr/ucb/psпределах ширины выходной до 80 , если выход трубы. Для стандарта POSIX PS, см. Мой ответ.
Щил
1
@schily Этот ответ совершенно верен для обычной psкоманды на не встроенном Linux, что есть у большинства читателей.
Жиль "ТАК ... перестать быть злым"
1
Но ОП не установил / linux как тег.
Щил
3

Есть и еще одно простое решение:

echo "$(ps afx)"
cinatic
источник
или простоps afx
nyxee
1
после определенного количества символов будет вырезано только "ps fax" (я думаю, 72 стандартная длина терминала), синтаксис echo "$ (your command)" предназначен для его отключения
cinatic
Спасибо за это. Теперь команда ведет себя совершенно по-разному в MacOS (я слышал, на ее основе BSD) и Ubuntu ( Linux). Linux не показывает никакой разницы в том, когда вы echoили нет. Но MAC OS X печатает столько, сколько может показать терминал. Я использую iTerm2и zsh. MAC не позволяет эту --fопцию.
nyxee
3

Для простоты попробуйте это: ps auxfww

Фибоначи
источник
0

Команда для MacOS немного отличается echo "$(ps aux)"

Jibeex
источник
Вы не хотите проходить через это echoбез необходимости. Также обратите внимание, что некоторые другие ответы уже упоминаются ps auxв некотором роде. Я хотел бы предложить комментарии или изменения к этим существующим ответам, чтобы указать, что они хороши для MacOS (что я и имел в виду).
Джефф Шаллер
0

Или вы могли бы сделать

IFS='$';for line in $(ps axf); do echo $line; done
Стефан Майу
источник
Мне любопытно, почему вы IFSсобираетесь $?
AdminBee