При помощи ps aux | grep -i “name of your desired program”
список PID появился, но я нашел больше PIDs, чем в Системном мониторе.
Как это возможно?
Я не нашел PIDs с -color =auto
в системном мониторе.
Когда Вы работаете ps ... | grep ...
, оба ps
и grep
запускаются вместе, и вывод ps
питается к grep
асинхронно. Так, к этому времени ps
сканирует список процессов и печатает вывод, grep
процесс также активен, и вывод ps
включает это grep
процесс также.
Теперь, если Вы делаете простое grep foo
, вывод ps
будет содержать grep foo
, и grep
будет соответствовать этому foo
:
$ ps aux | grep non-existent
muru 19042 0.0 0.0 10760 2224 pts/8 S+ 23:56 0:00 grep non-existent
Очевидно, нет никакого названного процесса non-existent
.
Вместо ps | grep
, использовать pgrep
для более чистого соответствия:
pgrep foo
Или ps
самостоятельно, если Вы знаете название команды:
ps -C foo
Почему grep --color...
? Поскольку Ubuntu определяет псевдоним для grep
по умолчанию:
$ alias grep
alias grep='grep --color=auto'
Это также, почему Вы видите глупые приемы как:
ps ... | grep foo | grep -v grep
ps ... | grep '[f]oo'