Il blog è stato spostato! Redirecting...

Stai per essere spostato sul nuovo indirizzo. Se non funziona vai su http://www.lejubila.net e aggiorna il tuo bookmark.

1.8.08

Escludere "grep" dall'output di "ps"

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.

2 commenti: