Bash: If/Else dans une ligne

Je suis en train de vérifier si un processus (supposons qu'il est appelé some_process) est en cours d'exécution sur un serveur. Si c'est le cas, echo 1, sinon echo 0.

C'est la commande que j'utilise, mais il ne fonctionne que partiellement (plus d'infos ci-dessous). Notez que j'ai besoin d'écrire le script en une seule ligne.

ps aux | grep some_proces[s] > /tmp/test.txt && if [ $? -eq 0 ]; then echo 1; else echo 0; fi

Remarque: La [s] dans some_proces[s] est de prévenir les grep de retourner lui-même.

Si some_process est en cours d'exécution, puis "1" obtient un écho, ce qui est bien. Toutefois, si some_process n'est pas en cours d'exécution, rien n'est fait l'écho.

  • Vous pouvez utiliser ps -Ccmd à trouver des processus de commande dont le nom est "cmd", qui peut complètement éliminer le grep. ps va définir le code de sortie pour certains une valeur non nulle si elle ne parvient pas à trouver un processus d'appariement.