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 и усеченное дерево процессов.
Это не мусор - это именно тот результат, о котором вы просили.