/ / Limit grep's output - linux, shell, grep

Ogranicz wyjście grepa - linux, shell, grep

Próbuję stworzyć menedżera serwera, ale muszę pobrać identyfikatory procesów i komendy niektórych procesów.

Na przykład:

 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

W jaki sposób mogę go tylko zwrócić proces, tylko zwrócić polecenie (./skulltag-server) lub oba? Dzięki.

Odpowiedzi:

3 dla odpowiedzi № 1

Możesz potokować do awk aby wybrać pole do wydrukowania

Na przykład. ps ax | grep ./skulltag | awk "{ print $1 }" wydrukuje pierwszą kolumnę (pid)

Zauważ, że możesz również zajrzeć do opcji -o do ps zmienić jego wyjście


3 dla odpowiedzi № 2

Myślę, że powinieneś używać awk

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

To da ci listę identyfikatorów procesowych.


3 dla odpowiedzi nr 3

W celu uzyskania identyfikatorów procesowych można również użyć niestandardowego, ale poręcznego pgrep.

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

Z grubsza odpowiada:

pgrep skulltag

1 dla odpowiedzi nr 4

Możesz przeanalizować wyniki ps ax za pomocą awk wyodrębnić kolumny, które chcesz:

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