/ / Ограничете изхода на grep - linux, shell, grep

Ограничете изхода на grep - linux, shell, grep

Опитвам се да направя мениджър на сървъри, но трябва да се захвана с идентификаторите на процесите и командите на някои процеси.

Например:

 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) или и двете? Благодаря.

Отговори:

3 за отговор № 1

Можеш да се измъкнеш AWK за да изберете кое поле да изведете

Например ps ax | grep ./skulltag | awk "{ print $1 }" ще отпечата първата колона (pid)

Обърнете внимание, че може да искате да разгледате и опцията -o к.с. да променя изхода си


3 за отговор № 2

Мисля, че трябва да използвате awk

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

Това ще ви даде списък с идентификаторите на процеса.


3 за отговор № 3

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

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

Приблизително еквивалентно на:

pgrep skulltag

1 за отговор № 4

Можете да анализирате резултатите от 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