ps axuwfw
Это комбинация нескольких опций в стиле BSD (все они на странице руководства, man ps
):
a
: включить процессы от других пользователей
x
: включить процессы без терминала
u
: показать ориентированные на пользователя информационные поля
w
: широкий вывод (132 столбца вместо 80)
f
: "лес": древовидное представление процессов
w
: еще более широкий вывод (без ограничений)
Другими словами, он просто показывает текущие запущенные процессы.
Однако, если вы видите старые процессы там, проверьте их поле "STAT" - если оно говорит Z
, процесс завершился, но его родитель еще не "пожинал" его; процесс "зомби". Обычно это указывает на то, что родительский процесс либо слегка глючит, либо зависает / падает.
Также обратите внимание, что не все операционные системы принимают эти параметры. На SysV это может быть ps -ef
.
ps axuwfw | grep -v grep | grep -i screen
|
это труба. Он перенаправляет вывод одной команды на вход другой. Это должно сделать более очевидным, что вышесказанное - не просто одна странная магическая команда; это три команды, связанные.
Первая команда, ps axuwfw
, уже была объяснена.
grep
, для поиска / фильтрации текста. grep foo
будет печатать только те строки ввода, которые содержат текст "foo". С опцией -v
вторая команда - grep -v …
- выполняет противоположное - печатает строки, которые не совпадают. (Опять же, обратитесь к man grep
или grep --help
.)
Этот конкретный вызов необходим, потому что все процессы в конвейере выполняются одновременно, поэтому ps…
покажет все процессы grep…
и ps axu | grep screen
приведет к тому, что grep…
также будет соответствовать своей записи в дополнение к желаемой. Поэтому добавляется второй grep…
чтобы явно игнорировать строки, в которых есть "grep".
(Конечно, есть лучшие инструменты, такие как pgrep -alf screen
, но многие люди все еще используют этот тип конвейера ps|grep|grep…
только потому, что его легко объединить, зная только ps
и grep
.)
Третья команда, grep -i screen
, снова просто извлекает строки, содержащие "screen".
Как описано на странице руководства и в выводе grep --help
, добавление опции -i
делает поиск нечувствительным к регистру, поэтому он также выводит строки, в которых есть "Screen" или "SCREEN".
Короче говоря, полная команда просто печатает те строки ps…
которые говорят о "экранной" программе.
«Выше две команды возвращают 431 и 7 в примере отсюда…»
Они не Они возвращают информацию о процессах с именем "screen" или "tmux". Число, указанное в примере, представляет собой количество возвращаемых процессов.
Автор слайд-шоу не включал полный вывод (что на самом деле не актуально); они только включали общее количество в качестве сводки, демонстрируя, что количество "экранных" пользователей в 60 раз больше, чем "tmux".
Если вы хотите, чтобы команда фактически подсчитывала для вас строки, вы можете а) добавить опцию -c
(count) к последней команде grep…
или b) передать ее через | wc -l
(Либо работает.)
«… Но в моей системе это возвращает мусор».
Возвращает некоторые ранее запущенные старые файлы makefile и усеченное дерево процессов.
Это не мусор - это именно тот результат, о котором вы просили.