Assumindo que up
significa que, se um processo estiver em execução no momento da verificação.
Você pode usar ps
(como você mencionou) ou pgrep
, já que você deseja usá-lo em um script, eu sugiro que você use pgrep
por sua simplicidade.
Por exemplo, vamos verificar se firefox
está em execução:
$ pgrep firefox ## Firefox is running, Shows the PID of firefox
17032
$ echo "$?" ## Exit status is 0 (One (or more) matched process(es) found)
0
$ pgrep firefox ## Firefox is Not running, Shows nothing
$ echo "$?" ## Exit code in this case is 1
1
No entanto, há uma captura muito importante, em sua forma padrão pgrep
corresponde ao nome dado como padrão de expressão regular em relação aos nomes de processo. Portanto, se um processo tiver um nome como firefox_foobar
e você tentar verificar se firefox
está sendo executado por pgrep firefox
, ele mostrará o PID do processo firefox_foobar
. Portanto, você teria a ideia de que firefox
está em execução, mas na verdade não é.
Aqui está um exemplo:
$ pgrep firefox_foobar
19002
$ pgrep firefox
19002
Para superar esse problema, você deve corresponder ao nome exato do processo usando a opção -x
de pgrep
:
$ pgrep -x firefox_foobar ## Shows the PID of firefox_foobar
19002
$ pgrep -x firefox ##Shows nothing as firefox is not running
Então, em poucas palavras, o seu script pode assumir a forma:
if pgrep -x 'ArcaDirect ITD' &>/dev/null; then echo "Running"; else echo "Not running"; fi