Ограничить вывод grep - PullRequest
       3

Ограничить вывод grep

1 голос
/ 21 сентября 2011

Я пытаюсь создать диспетчер сервера, но мне нужно получить идентификаторы процессов и команды некоторых процессов.

Например:

 ps ax | grep ./skulltag
 4760 pts/2    Tl     0:02 ./skulltag-server
 4793 pts/2    Tl     0:01 ./skulltag-server
 4956 pts/2    Tl     0:01 ./skulltag-server -port 13000
 4958 pts/2    Tl     0:26 ./skulltag-server -port 13001

Как бы получить егочтобы только вернуть процесс, только вернуть команду (./skulltag-server) или оба?Спасибо.

Ответы [ 4 ]

3 голосов
/ 21 сентября 2011

Для получения идентификаторов процессов вы также можете использовать нестандартные, но удобные pgrep.

ps ax | grep ./skulltag | awk '{ print $1 }'

Примерно эквивалентно:

pgrep skulltag
3 голосов
/ 21 сентября 2011

Я думаю, вы должны использовать awk

ps ax | grep ./skulltag | awk '{print $1}'  # Or $5, or $1 and $5

Это даст вам список идентификаторов процесса.

3 голосов
/ 21 сентября 2011

Вы можете направить на awk , чтобы выбрать, какое поле вывести

Например, ps ax | grep ./skulltag | awk '{ print $1 }' напечатает первый столбец (pid)

Обратите внимание, что вы также можете захотетьизучить использование опции -o для ps , чтобы изменить вывод

1 голос
/ 21 сентября 2011

Вы можете проанализировать результаты ps ax, используя awk, чтобы извлечь нужные столбцы:

aix@aix:~/tmp$ ps ax | grep bash
 1906 pts/5    Ss+    0:00 bash
13749 pts/31   Ss     0:00 bash
27315 ?        SN     0:00 /bin/bash /etc/cron.daily/backup
27648 pts/31   S+     0:00 grep --color=auto bash

aix@aix:~/tmp$ ps ax | grep bash | awk '{print $1}'
1906
13749
27315
27652

aix@aix:~/tmp$ ps ax | grep bash | awk '{print $5}'
bash
bash
/bin/bash
grep
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...