web-dev-qa-db-ja.com

プログラムが(定期的に)実行されているかどうかを確認し、実行されていない場合は起動するデーモンを作成するにはどうすればよいですか?

GNOME3.18を搭載したUbuntuGNOME 15.10を使用していますが、通常のアプリケーションランチャーが気に入らないため、Dockyをインストールしましたが、Dockyが突然閉じて手動で再起動する必要があるため、デーモンを作成するにはどうすればよいか疑問に思いました。 Dockyが実行されているかどうかを定期的にチェックし、実行されていない場合は実行するバックグラウンドで常に実行されますか?

1
user364819

スクリプトは、好きな場所、できればホームディレクトリに作成します。私はcheck_docky.bshと呼ぶのが好きです。スクリプトで、次の行を実行します。

#!/bin/bash

ps -ef | grep -i docky.exe | grep -v grep >/dev/null

case $? in
1) sh -c "mono /usr/lib/docky/Docky.exe";;
0) exit 0;;
esac

上記のスクリプトでは、ps -ef | grepDockyが実行されているかどうかを確認します。返される終了コードが実行されていない場合は1であるため、caseステートメントはDockyを自動的に再起動します。それ以外の場合、スクリプトは通常、コード0で終了します。

スクリプトが実行可能であることを確認してください。

chmod +x check_docky.bsh

次に、スクリプトのcronジョブを作成します。

まず、次のようにcrontabを実行します。

$ crontab -e

次に、新しいエントリとして次を追加し、時間の:00から開始して10分ごとにチェックするようにします。

# m h  dom mon dow   command
*/10 * * * * /home/<username>/check_docky.bsh

このコマンドが機能することを示すには:

~$ ps -ef | grep wookie | grep -v grep
~$ echo $?
1
~$ ps -ef | grep wookie
terrance  20978  6976  0 13:53 pts/17   00:00:00 grep --color=auto wookie
~$ echo $?
0

お役に立てれば!

1
Terrance