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


17

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

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


Не ответ, но если я запускаю 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 может работать по-другому.)


@ Муру, надеюсь, теперь это выглядит лучше. Спасибо, что все прояснили!
Томмигун

И извините за причинение беспорядка.
МэтьюРок

1
Ваш ответ относится только к , /usr/ucb/psи даже с помощью этой программы вы должны были бы wwв /usr/ucb/psпределах ширины выходной до 80 , если выход трубы. Для стандарта POSIX PS, см. Мой ответ.
Щил

1
@schily Этот ответ совершенно верен для обычной psкоманды на не встроенном Linux, что есть у большинства читателей.
Жиль "ТАК ... перестать быть злым"

1
Но ОП не установил / linux как тег.
Щил

3

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

echo "$(ps afx)"

или просто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


0

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


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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.