bashを使用して無限cpコマンドが失敗するかどうかを検出する方法

bashを使用して無限cpコマンドが失敗するかどうかを検出する方法

起動時にsshfsを使用してmntにリモートフォルダをマウントする小さなデータコレクタ、Raspberry Pi Zero Wがあります。データ転送はcpコマンドを使用して行われます。たとえば、cp device file &デバイスはローカルで、ファイルはリモートフォルダにあります。これは無限ループです。 Piの電源装置に障害が発生した場合、電源が回復するとプロセスは再開されます。しかし、複製中にサーバーに障害が発生した場合はどうなりますか?その後、レプリケーションが再開されるまで再起動を循環したいと思います。しかし、サーバーがダウンしたときにpiでどうやって知ることができますか?

答え1

ここには多くの問題があります。

  • cpはストリームではなくファイルをコピーするように設計されています。 pi が再起動されるたびにコピーを再開し、すべての古いデータをゼロにします。これが望ましくない場合は、次のようなものを使用する方が良いかもしれませんcat device >> filedd
  • sshfsはそれほど強力ではありません。サーバが再起動すると sshfs 接続が終了し、積極的に再起動しないと再開されず、cp が終了します。 NFSはこの状況を処理するように設計されており、サーバーがバックアップされるまで一時停止してから何も起こらなかったかのように再起動します。 ssh自体を使用するだけでsshfsよりも優れています。
  • 実行している作業によっては、ファイルシステムセマンティクスを使用するよりも、サーバーにサービスの種類を設定してデータを収集する方が良い場合があります。両端のNetcatはより良いかもしれませんが、それでもそれほど強力ではありません。

これを行う理由と目的が何であるかについての詳細がなければ、より良いアドバイスを提供するのは難しいです。

関連情報