bashスクリプトが実行されていることをcronで確認してください。

bashスクリプトが実行されていることをcronで確認してください。

ユーザーが接続状態を継続的に監視し、問題が発生した場合に対処するためにwhile do使用できるbashスクリプトがあります。sleep保護されていない唯一のことは、スクリプト自体の実行を確認することです。

myscript.sh起動時にinit.dエントリを実行してから1分ごとにCRONジョブを実行し、起動時に自動的に実行したスクリプトがまだ実行されていることを確認したいと思います。この目標をどのように達成できますか?

答え1

最新のinitシステム(systemdやupstartなど)を使用すると、スクリプトが失敗した場合にinitシステムにスクリプトを再起動させることができます。

何らかの理由で古いシステムが利用できない場合は、スクリプトが定期的にフラグファイルを更新するように指示し、(touch /var/lib/myapp/flagfile)cronを使用してフラグファイルが特定の時間(秒)より古いことを確認し、必要に応じてスクリプトを再起動できます。それは次のとおりです。

# get current time (in seconds since the epoch)
now=$(date +%s)

# get flag file mtime (in seconds since the epoch)
last_update=$(stat --printf '%Y' /var/lib/myapp/flagfile)

if [ $(( now - last_update )) -gt $interval ]; then
    restart_script_here
fi

システムを使う

システムが利用可能な場合は、.service. unit with theRestart = always key, which instructs systemd to restart the script whenever it fails. E.g., put something like this in/etc/systemd/system/myscript.service`を作成してください。

[Unit]
Description=This is my nifty service.
# Put any dependencies here

[Service]
Type=simple
ExecStart=/path/to/myscript
Restart=always

[Install]
WantedBy=multi-user.target

次に、次を使用して有効にします。

# systemctl enable myscript
# systemctl start myscript

スケジュールされたジョブの使用

永続スクリプトを実行するのではなく、通常のcronジョブを実行して必要なチェックおよび修正操作を実行できます。 1分間に1回だけチェックするように制限されていますが、その頻度が許容可能な場合、これはより簡単な解決策です。

関連情報