Sto cercando di creare un server manager, ma ho bisogno di prendere gli ID di processo e i comandi di alcuni processi.
Per esempio:
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
Come posso ottenere di restituire solo il processo, solo restituire il comando (./skulltag-server) o entrambi? Grazie.
risposte:
3 per risposta № 1Puoi pipe a awk per selezionare quale campo emettere
Per esempio. ps ax | grep ./skulltag | awk "{ print $1 }"
stamperà la prima colonna (pid)
Si noti che si potrebbe anche voler esaminare usando l'opzione -o per ps per modificare il suo output
3 per risposta № 2
Penso che dovresti usare awk
ps ax | grep ./skulltag | awk "{print $1}" # Or $5, or $1 and $5
Questo ti darà la lista degli ID di processo.
3 per risposta № 3
Per ottenere gli ID di processo puoi anche usare non standard, ma a portata di mano pgrep
.
ps ax | grep ./skulltag | awk "{ print $1 }"
È approssimativamente equivalente a:
pgrep skulltag
1 per risposta № 4
Potresti analizzare i risultati di ps ax
utilizzando awk
per estrarre le colonne che vuoi:
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