
特定のプログラムが実行中の場合、ターミナルに入力してコマンドを実行する方法はありますか? たとえば、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