В чем разница между процессами, перечисленными `ps` и`ps -A`?

В чем разница между процессами, перечисленными ps а также ps -A?

2 ответа

Решение

Без -A, ps будет печатать только процессы, принадлежащие текущему сеансу. Думайте об этом как "абсолютно все". На связанной ноте -a делает то же самое, но ограничивая его владельцем сеанса (имя пользователя).

GNU ps Командование страдает от серьезного случая множественного расстройства личности. Поэтому неудивительно, что его страница руководства сбивает с толку. Возможно, просмотр руководств BSD может помочь. Ведь этот вопрос помечен как unix.

Операция БСД ps довольно просто, если иметь в виду две вещи:

  • Процессы выбираются для отображения с использованием двух основных фильтров. Эти фильтры включены по умолчанию, а параметры командной строки отключают их. Обычная неукрашенная ps таким образом фильтруется через оба.
  • Синтаксис BSD уходит очень далеко. Хотя современные BSD используют getopt и соглашение опций с префиксом минус, уместные здесь опции и поведение такие же, как и 30 лет назад.

Это поведение таково:

  • -a (исторически a) опция отключает всю фильтрацию "селектора".
    • Различные другие параметры командной строки определяют селекторы: -U выбирает по UID, -t контролируя имя терминала, -p выбирает по идентификатору процесса и так далее. Все это обойдено -a,
    • Если никакие селекторы не указаны явно, селектор по умолчанию должен отображать только процессы, запущенные с тем же эффективным UID, что и пользователь, вызвавший ps, Этот селектор по умолчанию является историческим фильтром, который эта опция отключает.
  • -x (исторически x) опция отключает ограничение ps отображать только процессы, которые имеют управляющий терминал.

Исторически, BSD ps не было A вариант. Но современные BSD реализуют -A вариант, также можно использовать как A для (степени) совместимости с (более поздней) Единой Спецификацией UNIX. -A просто так же, как использование обоих -a а также -x: он отключает оба ограничения, оставляя один со всеми процессами без фильтра.

OpenBSD и NetBSD документируют -A вариант, в случае NetBSD явно как -a -x, FreeBSD этого не делает, но комментарий в исходном коде гласит, что он есть как намеренно недокументированный вариант совместимости с SUSv5.

дальнейшее чтение

  • ps 1983-04-13. 4.2BSD Справочные страницы.
  • ps Страницы руководства OpenBSD.
  • ps 2009-10-22. Страницы руководства по NetBSD.
  • ps 2014-08-07. Страницы Руководства FreeBSD.
Другие вопросы по тегам