В чем разница между процессами, перечисленными ps и ps -A ?
2 ответа
без -A ps будет печатать только процессы, принадлежащие текущему сеансу. Думайте об этом как "абсолютно все". В связанной заметке -a делает то же самое, но ограничивая ее владельцем сеанса (имя пользователя).
Команда GNU ps страдает от серьезного случая множественного расстройства личности. Поэтому неудивительно, что его страница руководства сбивает с толку. Возможно, поможет просмотр руководств BSD. В конце концов, этот вопрос помечен UNIX.
Работа BSD 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.
