Опитвам се да направя мениджър на сървъри, но трябва да се захвана с идентификаторите на процесите и командите на някои процеси.
Например:
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