Как получить полный список процессов в солярисе без усеченных линий?

57

Есть ли способ создать полный список процессов в солярисе без усеченных линий? Я попробовал psкоманду со следующими аргументами:

  -f Создает полный список. (См. Ниже для
                      значение столбцов в полном списке
                      Инж.)
  -l Создает длинный список. (Смотри ниже.)

Итак, оба они, кажется, делают то, что я хочу, однако ниже, на странице справочника ps, я нахожу это:

 
 args Команда со всеми аргументами в виде
                         строка. Реализация может усечь
                         это значение ширины поля; это
                         зависит от реализации, любой
                         дальнейшее усечение происходит. это
                         не указано ли строка
                         представлена ​​версия аргумента
                         список, как он был передан в команду
                         когда это началось, или является версией
                         аргументы, как они могли быть изменены
                         по заявке. Приложения не могут
                         зависит от возможности изменить их
                         список аргументов и имеющие эту модификацию-
                         Это отражается в выводе пс.
                         Реализация Solaris ограничивает
                         строка до 80 байт; строка является
                         версия списка аргументов, как это было
                         передается команде, когда она началась.

Который в основном говорит, что выходные данные будут усечены, и я ничего не могу с этим поделать. Итак, я иду сюда. Конечно, другие люди столкнулись с этой проблемой, и, возможно, даже есть способ обойти ее. Я предполагаю, что ps не может сделать это, и поэтому мне нужно использовать другие инструменты, чтобы сделать это. Это точно?

Гейб.
источник
Вы говорите о psкоманде? Если это так, пожалуйста, обновите вопрос, чтобы он был понятнее.
phunehehe
Да, извините ... я сначала поработал с командой ps, я прояснил вопрос.
таращиться

Ответы:

63

ты можешь попробовать

pargs <PID>

это дает вам список всех аргументов

или использовать другой пс. Если запустить от имени пользователя root (или любого пользователя с достаточными правами)

/usr/ucb/ps auxww

даст вам все аргументы. Его часть SUNWscpu, «Совместимость с источниками (Usr)»

Марсель Дж
источник
pargsпоказывает внутрипроцессную копию аргументов командной строки (и, возможно, среды). Полезно знать, спасибо!
Жиль "ТАК - перестань быть злым"
1
весь этот каталог / usr / ucb для меня новый ... мне нравится!
таращиться
3
В Solaris 11, если вы используете опции без тире (например, "/ usr / bin / ps auxwww"), они будут обрабатываться как опции стиля UCB, и в результате будут отображаться очень длинные строки, даже если вы НЕ работаете от имени пользователя root. Это не очень хорошо разрекламировано. См. Также: superuser.com/questions/148271/ps-command-in-solaris
Крис Куэнел
14

Ядро не обязано отслеживать аргументы командной строки. Когда программа запускается через execveвызов, ядро ​​должно скопировать аргументы в память процесса (чтобы они были доступны, как, например, argvв программе на Си). После этого ядро ​​может отказаться от памяти, используемой для хранения начальных аргументов командной строки. Процесс может перезаписать свою копию аргументов. Так что может просто не быть никаких следов аргументов.

Некоторые варианты Unix сохраняют копию аргументов в той или иной форме. Solaris предоставляет некоторые данные в /proc/$pid. Начиная с OpenSolaris 2009.06, единственная трассировка аргументов находится там /proc/$pid/psinfo, где они объединяются с пробелами между ними (поэтому вы не можете различить foo "one" "two"и foo "one two"), и результирующая строка усекается до 80 байтов. Это поле в /proc/$pid/psinfoтом, что psпечатается в argsстолбце.

Кстати, параметры -fи определяют -l, какие поля печатаются, а не усекаются ли поля до некоторой ширины.

Жиль "ТАК - перестань быть злым"
источник
Это был хороший ответ, очень информативный. Команда pargs лучше соответствовала моей потребности, и это единственная причина, по которой я выбрал этот ответ.
таращиться
6
Итак, снова мы сидим здесь в 2013 году и все же усекаем строки до 80 байтов, потому что у нас были только 80-символьные терминалы в 1970-х годах, и «некоторым» программам еще предстоит понять тот факт, что жизнь пошла дальше. И нам это нравится, мы хвалим это как "совместимость"! Нам должно быть стыдно за себя ...
Манджабес
1
@ Манджабес, ха-ха! Люди, которые решили продолжать использовать Solaris, не должны жаловаться на то, что система делает что-то по-старому ;-) Solaris намеренно медленно изменяется, чтобы быть более обратно совместимым со старыми программами, которые ожидают определенного поведения. Если вам нужна ОС с более длинным списком ps и более интересными возможностями в служебных программах, вы можете вместо этого использовать Linux.
JohnGH
2

ps -eдает список всех запущенных процессов. Также есть это ps -elf.

ари
источник
2
Даже использование аргумента -l все еще
Lars Nordin
1
Не ответ на вопрос.
Конрад Гаевский
0

В зависимости от того, какую psкоманду вы используете, я использую

ps -auxw
Wes
источник
1
Версия ps в Solaris, использующая аргументы auxw, не требует начального символа '-' Если вы не используете Solaris, ваш ответ не имеет значения.
JohnGH
0

prstat даст вам текущие процессы вместе с их pids и загрузкой процессора.

user41052
источник