Многие UNIXы теперь имеют pgrep
, что делает именно то, что вы хотите
DESCRIPTION
pgrep looks through the currently running processes and lists the process IDs which
matches the selection criteria to stdout. All the criteria have to match.
Как пример:
$ps -ef | grep sendmail
simonp 6004 27310 0 09:16 pts/5 00:00:00 grep sendmail
root 6800 1 0 Jul19 ? 00:00:03 sendmail: accepting connections
smmsp 6809 1 0 Jul19 ? 00:00:01 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue
$pgrep sendmail
6800
6809
Параметр, переданный в pgrep
, является регулярным выражением - он сопоставляется либо с именем исполняемого файла, либо с полной строкой аргумента процесса, зависящей от параметров (-f
).
$pgrep '^sen.*il$'
6800
6809
$pgrep -f '^sendmail.*connections$'
6800
Для получения дополнительной информации
man pgrep