リモートホストへの接続が失われたときにリモートホストでスクリプトを実行するにはどうすればよいですか?

リモートホストへの接続が失われたときにリモートホストでスクリプトを実行するにはどうすればよいですか?

私はDebian Linuxを実行しているBeagleBone Blackを使用していますが、プログラムをテストすると時々無線接続が失われます。これ自体が必ずしも問題になるわけではありませんが、ロボットでこれを実行しているため、ロボットで実行中のプログラムを停止できないと、悪いことが発生することがあります。 BBB(または通常Linux)で接続が切断されたときにそれを検出し、現在実行中のプログラム内で応答するか、別のスクリプトを実行してすべてを安全な状態にする方法はありますか?私はいくつかの内容を読んでSIGHUPを試してみましたが、実際には動作しません。 (ローカルSSHプロセスを強制終了した後も、モーターは実行を続けます。)

ベストアンサー1

n(ミリ秒)秒ごとにリモート接続を介してシグナルを送信してシグナルを受信できない場合は、アクションを実行する一種の監視スクリプトを実行できます。

バラよりシェルスクリプトにタイムアウトを導入する方法は?expectタイムアウト時にメッセージを印刷するスクリプトの例。これを変更して安全なシャットダウンを生成できます。

Watchdog echo(localhost)とExpect(ロボット)は同じSSHを介して接続する必要があります(たとえば、SSHポート転送を介して)。これにより、sshを切断すると監視デバイスもシャットダウンされ、セーフシャットダウンスクリプトが起動します。

おすすめ記事