Расширить вывод ps до более чем 80 символов в Solaris 8 - PullRequest
4 голосов
/ 08 апреля 2011

Как расширить вывод ps -fe в Solaris, чтобы он отображал более 80 символов?У моего процесса есть несколько аргументов, и имя процесса больше не может отображаться.

Ответы [ 6 ]

8 голосов
/ 08 апреля 2011

Вы не можете отобразить их со стандартным ps (/ usr / bin / ps), который является обычным SVR4.

Чтобы получить полную строку аргумента, используйте PSD BS (UCB = Калифорнийский университет в Беркли):

/usr/ucb/ps -alxwww
3 голосов
/ 22 февраля 2016

Мы наконец исправили это в Solaris; начиная с Solaris 11.3 SRU 5 все исходные векторы аргументов, а также переменные среды могут быть получены из / proc. ps теперь напечатает всю командную строку.

Исправлено в Solaris 11.3 SRU 5

2 голосов
/ 06 апреля 2015

Простой ответ заключается в том, что невозможно надежно получить полные аргументы процессов в Solaris для процессов, принадлежащих другим пользователям.Если у вас есть root или другой привилегированный доступ, вы можете использовать / usr / ucb / ps в более старых версиях и «pargs» или аналогичные инструменты в более новых версиях (нет инструмента, который работает во всех версиях).

По существуSolaris хранит исходные аргументы во время запуска процесса, в то время как большинство других платформ позволяют ps получать доступ к содержимому argv во время выполнения процесса.Эта сохраненная копия находится в специальной структуре данных ядра с ограниченным (80 байт) размером.Это также означает, что программа не может изменять аргументы args после запуска, как показано ps, для полезных или гнусных способов.

Таким образом, если вам нужен доступ к командной строке для переносимых целей, таких как проверка pid, вам придется выбирать между принудительным введением короткой командной строки с помощью хаков, таких как запуск программ, управляемых путем execp без абсолютных путей, илипотребуется отказаться от этой переносимой функциональности в Solaris.

1 голос
/ 14 января 2014

вы можете использовать PID Pars, он даст вам больше информации, чем PS

0 голосов
/ 08 апреля 2011

Попробуйте ps -efl.Если это не сработает (у меня нет удобной коробки Solaris), вы также можете попробовать ps -efl | cat (поскольку некоторые программы проверяют, выводят ли они на терминал, чтобы определить их ширину вывода).

0 голосов
/ 08 апреля 2011

Для пс доступно два набора опций. Другие будут связываться с правильными именами ((может быть, BSD и SRVn)?)

С версией без опций, предшествующей с дефисом, вы можете сделать

ps auxww(w?) | grep ${PID} для увеличения длины печатаемой детали команды (опять же, обратите внимание на НИКАКОЙ лидирующий индикатор опции '-').

Обратите внимание, что в некоторых случаях перед самой командой вы увидите множество назначений переменных среды, т.е. myPath = ... cfgFile = ... / path / to / command ... args ...

Я думаю, что 'www' в некоторых системах будет печатать все, независимо от того, как долго длится команда.

Наконец, по моему опыту, используя ps для выполнения многих сумасшедших вещей, я иногда имел бы PID, и на выходе отображались бы первые 6? столбцы, но пространство, зарезервированное для команды, было пустым или имело какое-то значение заполнителя. В конце концов я выяснил, почему это так, по поиску comp.unix.shell, но это слишком давно, чтобы быть уверенным, и у меня нет доступа к системам Solaris сейчас.

Надеюсь, это поможет.

...