Як я можу отримати повний список процесів у сонелі, без усічених ліній?


57

Чи існує спосіб генерувати повний перелік процесів на сонелях, без усічених ліній? Я спробував psкоманду, маючи такі аргументи:

  -f Створює повний список. (Див. Нижче для
                      значення стовпців у повному списку-
                      інж.)
  -l Створює довгий список. (Дивіться нижче.)

Отже, ці обидва, здається, роблять те, що я хочу, однак далі на сторінці "ps man man" я вважаю це:

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

Що в основному говорить, що результат буде скорочений, і я нічого не можу з цим зробити. Отже, я приходжу сюди. Напевно, інші люди зіткнулися з цією проблемою і, можливо, навіть вирішили її. Я здогадуюсь, що PS не може цього зробити, тому мені потрібно використовувати інші інструменти для цього. Це точно?


Ви говорите про psкоманду? Якщо так, то оновіть це питання, щоб було зрозуміліше.
phunehehe

Так, вибачте ... моє первинне поводження було з командою ps, я зробив питання зрозумілішим.
габе.

Відповіді:


63

ви можете спробувати

pargs <PID>

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

або ж використовувати інший ps. Якщо запустити як 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у програмі C). Після цього ядро ​​може відкинути пам'ять, що використовується для зберігання початкових аргументів командного рядка. У процесі дозволено перезаписати свою копію аргументів. Тож аргументів просто не може бути й сліду.

Деякі варіанти 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-х, а "деякі" програми ще не зрозуміли, що життя продовжувалося. І нам це подобається, ми хвалимо це як "сумісність"! Ми повинні соромитися самих себе ...
Manjabes

1
@Manjabes ха-ха! Люди, які вирішили продовжувати користуватися Solaris, не повинні скаржитися на те, що система робить речі по-старому ;-) Solaris навмисно повільно змінюється, щоб бути більш зворотною сумісною зі старими програмами, які очікують певної поведінки. Якщо ви хочете, щоб ОС з більш довгим переліком ps та більш фантазійними можливостями в утилітах ви могли використовувати Linux.
JohnGH


0

Залежно від того, яку psкоманду ви використовуєте, я використовую

ps -auxw

1
Версія ps на Solaris, яка використовує аргументи auxw, не вимагає провідного '-' Якщо ви не в Solaris, то ваша відповідь не має значення.
JohnGH

0

prstat дасть вам поточні запущені процеси, разом із їхніми PID та використанням процесора.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.