Sto cercando di verificare se un processo (supponiamo che sia chiamato some_process) è in esecuzione su un server. Se lo è, allora echo 1, altrimenti echo 0.
Questo è il comando che sto usando ma funziona solo parzialmente (maggiori informazioni di seguito). Nota che devo scrivere lo script in una riga.
ps aux | grep some_proces[s] > /tmp/test.txt && if [ $? -eq 0 ]; then echo 1; else echo 0; fi
Nota: Il [s]in some_proces[s]è quello di evitare grepdi tornare in sé.
Se some_processè in esecuzione, "1"viene ripetuto, il che va bene. Tuttavia, se some_processnon è in esecuzione, nulla viene ripetuto.
ps -Ccmdper trovare processi il cui nome del comando è "cmd", che può eliminare completamente il filegrep.psimposterà il codice di uscita su un valore diverso da zero se non riesce a trovare un processo corrispondente.