Molte volte si presenta la necessità di ricavare informazioni su un i processi in esecuzione utilizzando il comando ps in combinazione con grep, per esempio:
#ps ax |grep "ssh -N -R 3333"
7988 ? Ss 0:00 ssh -N -R 3333:localhost:222 host.com -f
8067 pts/1 R+ 0:00 grep ssh -N -R 3333
Si può notare che l’ultima riga dell’output riguarda il processo di grep utilizzato per estrarre le righe contenenti ssh.
Potremmo avere l’esigenza di non dovere fare comparire quest’ultima riga. Qui di seguito elenco alcune soluzioni:
# ps ax |grep "ssh -N -R 3333" | grep -v grep
con il grep -v grep non considera le righe contenenti la stringa grep
# ps ax |grep "[s]sh -N -R 3333"
invece grep [s]sh filtra soltanto le righe al cui interno c’è la parola ssh
# ps u -C ssh
l’opzione -C di ps estrae solo i processi del comando specificato, il problema è che nel nostro caso non possiamo filtrare tutta la stringa ssh -N -R 3333 in quanto ps u -C “ssh -N -R 3333” non sono riusci to a farlo funzionare
# ps u -N -C grep | grep "ssh -N -R 3333"
così invece prima togliamo tutte le righe di processi generati dal comando grep e poi filtriamo quello che interessa
Sicuramente le diverse soluzioni non sono perfette, può andare bene una piuttosto che un’altra a seconda dei casi specifici.
Ci fossero altre soluzione sarebbero ben gradite.
David Bigagli
correggi grep -w
@luigi
Grazie, fatto.