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

Ни одна из реализаций, Вы нашли соответствия прототипом в sys/stat.h, Возможно, ищущем включать оператор с этим заголовочным файлом, не будет более успешной?

57
14.06.2013, 16:03
5 ответов

Вы могли попробовать

pargs <PID>

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

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

/usr/ucb/ps auxww

даст Вам всем аргументы. Его часть SUNWscpu, "Исходная Совместимость, (Usr)"

63
27.01.2020, 19:33
  • 1
    pargs показывает незавершенную копию параметров командной строки (и дополнительно среда). Хороший для знания, Спасибо! –  Gilles 'SO- stop being evil' 11.11.2010, 22:12
  • 2
    этот целый/usr/ucb каталог плохо мне знаком... Мне нравится он! –  gabe. 16.11.2010, 22:39
  • 3
    На Солярисе 11, если Вы будете использовать опции без тире (как "/usr/bin/ps auxwww то") их будут рассматривать как параметры стиля UCB, и вывод покажет дополнительные длинные линии, даже когда Вы НЕ работаете как корень. Это не является получившим широкую огласку.См. также: А-ч superuser.com/questions/148271/ps-command-in-solaris –  Chris Quenelle 03.11.2012, 06:22

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

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

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

14
27.01.2020, 19:33
  • 1
    , Это было хорошим ответом также, очень информативный. Команда pargs удовлетворила мои потребности лучше, которые являются единственной причиной, я выбрал тот ответ по этому. –  gabe. 16.11.2010, 21:07
  • 2
    Так, еще раз мы сидим здесь в 2013 году, и тем не менее мы усекаем строки к 80 байтам, потому что у нас только были терминалы с 80 символами в 1970-х и "немного", программы должны все же понять то, что жизнь шла дальше. И нам нравится он, мы хвалим это как "совместимость"! Мы должны стыдиться нас... –  Manjabes 03.01.2013, 16:31
  • 3
    @Manjabes ха-ха! Люди, которые принимают решение продолжать использовать Солярис, не должны жаловаться на системные вещи выполнения старым-skool способом ;-) Солярис намеренно не спешит измениться, быть больше назад совместимым с более старыми программами, которые ожидают определенное поведение. Если Вы хотите ОС с более длинным списком PS и более необычными возможностями в утилитах, Вы могли использовать Linux вместо этого. –  JohnGH 12.11.2015, 20:41

Завися, который ps управляйте, чтобы Вы использовали, я использую

ps -auxw
0
27.01.2020, 19:33
  • 1
    Версия PS на Солярисе, который использует auxw аргументы, не требует продвижения '-', Если Вы не находитесь на Солярисе затем, Ваш ответ не релевантен. –  JohnGH 12.11.2015, 20:42

prstat даст Вам в настоящее время рабочие процессы наряду с их pids и загрузку ЦП.

0
27.01.2020, 19:33

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

2
27.01.2020, 19:33

Теги

Похожие вопросы