Bashスクリプトを使用してアプリケーションが実行されているかどうかを確認するには?

Bashスクリプトを使用してアプリケーションが実行されているかどうかを確認するには?

私のホームフォルダにgnomeで実行されるアプリケーションがあります。これでMeta+を押すと、実行したいアプリケーションを追加しましたRCCSM)。マイホームフォルダから実行してアプリケーションを実行します./gnome-run
印刷物に申請プロセスの兆候が見つかりませんps -A

問題は、gnome-runプログラムを開き、キーの組み合わせを押すとアプリケーションが閉じたいと思うことです。アプリケーションが実行されていることを確認するためにbashファイルを作成する方法はありますか?その場合は閉じ、それ以外の場合は開始します。

ベストアンサー1

このシェルスクリプトはすべてのプログラムの起動と停止を処理する必要があります。

#!/bin/bash

BASECMD=${1%%\ *}
PID=$(pgrep "$BASECMD")
if [ "$?" -eq "0" ]; then
    echo "at least one instance of "$BASECMD" found, killing all instances"
    kill $PID
else
    echo "no running instances of "$BASECMD" found, starting one"
    $1
 fi

以下に保存すると仮定すると、~/mystarterそれを使用してすべてのコマンドを実行できます~/mystarter <name>。たとえば、あなたの場合はMeta+をR次にバインドします。

~/mystarter gnome-run

そして、スクリプトが実行可能であることを確認してください。また、毎回場所全体を入力する必要がないように、どこかに置くことをお勧めchmod u+x ~/mystarterします。PATH

gnome-runに表示されないという事実は、ps -Agnome run自体が実際のプロセスを開始するスクリプトではないことを確認してください。ps -A | wc -l開始前後の違いを確認してください(実行中のすべてのプロセスが計算されます)。

編集する:

これで回答を受け入れましたので、これが参照点になるようにコマンドライン引数を使用してコマンドを実行するサポートを追加する必要があると思いました。次のコマンドを実行します。

 ./mystarter 'cmd args'

たとえば、

./mystarter 'ncmpcpp -c ~/.ncmpcpp'

このコマンドは単にすでに実行中であることを確認し、ncmpcppそうでない場合は完全なコマンド(引数を含む)を実行します。ncmpcpp

おすすめ記事