プログラムが実行中の場合、何かを行う

プログラムが実行中の場合、何かを行う

特定のプログラムが実行中の場合、ターミナルに入力してコマンドを実行する方法はありますか? たとえば、if <Libre office is running> then sudo pkill <Libre ofice>

編集 1: 私がやりたいのは、プログラムが実行中の場合は実行され、実行されていない場合は何もしないか、他の処理を実行する if ステートメントをターミナルに作成することです。

答え1

「私がやりたいのは、プログラムが実行中の場合は実行し、実行されていない場合は何もしないか、何か他のことを実行する if ステートメントをターミナルに作成することです。」

名前を指定してプログラムが実行中かどうかを判断するには、 を使用しますpgrep。LibreOffice のワードプロセッサが実行中の場合、何かを実行するには、次のようにします。

pgrep soffice.bin >/dev/null && do_something

同様に、LibreOfficeのワードプロセッサがないランニング:

pgrep soffice.bin >/dev/null || do_something

さらに、これら 2 つを組み合わせて使用​​することもできます。

pgrep soffice.bin && do_one_thing || do_another

あるいは、状況がさらに複雑になる場合は、次のifステートメントを使用します。

if pgrep soffice.bin
then
    # command is running
    do_one_thing
    do_one_thing2
else
    # command is not running
    do_another
    do_another2
fi

上記が機能するのはpgrep、 が と同様にgrep、有用な終了コードを設定するためです。プロセスが見つかった場合、終了コード 0 を返します (シェルはこれを論理 true と解釈します)。見つからない場合は、終了コード 1 を返します (シェルは 0 以外の終了コードを false と解釈します)。

現在実行中のすべてのプログラム(および引数として使用する名前pgrep)を確認するには、次のコマンドを実行します。ps ax

関連情報