
В чем разница между процессами, перечисленными ps
и ps -A
?
решение1
без -A
, ps выведет только процессы, принадлежащие текущему сеансу. Думайте об этом как о "абсолютно всем". Попутно -a
делает то же самое, но ограничивает его владельцем сеанса (имя пользователя).
решение2
Команда GNU ps
страдает от тяжелого случая множественного расстройства личности. Поэтому неудивительно, что ее страница руководства запутана. Возможно, поможет просмотр руководств BSD. В конце концов, этот вопросявляетсяпомеченоюникс.
Работа BSD ps
довольно проста, если учитывать два момента:
- Процессы выбираются для отображения с помощью двух основных фильтров. Эти фильтрынапо умолчанию и параметры командной строки включают ихвыключенный. Таким образом, простота без украшений
ps
фильтруется через оба. - Синтаксис BSD уходит далеко в прошлое. Хотя современные BSD используют
getopt
и соглашение об опциях, предваряемых знаком минус, опции и поведение, имеющие отношение к этому, во многом такие же, как и 30 лет назад.
Это поведение следующее:
- (
-a
Историческиa
) вариантвыключаетвсе фильтры «селектора».- Различные другие параметры командной строки определяют селекторы:
-U
выбор по UID,-t
по имени управляющего терминала,-p
выбор по ID процесса и т. д. Все это обходит-a
. - Если селекторы явно не указаны,селектор по умолчаниюотображать только процессы, запущенные с тем же эффективным UID, что и у пользователя, вызвавшего
ps
. Этот селектор по умолчанию является историческим фильтром, который эта опция отключает.
- Различные другие параметры командной строки определяют селекторы:
- (
-x
Историческиx
) вариантвыключаетограничение,ps
отображающее только те процессы, которые имеют управляющий терминал.
Исторически BSD ps
не имела такой A
опции. Но современные BSD реализуют -A
опцию, также используемую как A
, для (степени) совместимости с (более поздней) Единой спецификацией UNIX. -A
это то же самое, что использовать -a
и -x
: она отключает оба ограничения, оставляя одно со всеми процессами, неотфильтрованным.
OpenBSD и NetBSD документируют эту -A
опцию, в случае NetBSD явно как -a -x
. FreeBSD этого не делает, но комментарий в исходном коде гласит, что она присутствует как намеренно недокументированная опция совместимости с SUSv5.