ヘッドレスLinuxデバイスに問題があります。簡単に言うと、rootfsが利用できなくなり、すべてがブロックされます。電源を入れ直すことが唯一の方法であり、手動で電源を入れ直すのではなく、自動的に再起動したいと思います。
/tmp
rootfsとは別のフォルダがあります。
tmpfs on /tmp type tmpfs (rw,relatime)
だからアイデアが浮かんでbusybox
ここにコピーし、バックグラウンドでスクリプトを実行しました。
# cp /bin/busybox /tmp
# (/tmp/busybox sleep 60;/tmp/busybox reboot) &
#
その後、問題のある状況を提示し、rootfsを終了して待ちました。ただし、60秒経っても再起動は発生しませんでした。
使用できませ/
んが、このコマンドを使用してデバイスを再起動する必要はありませんか?
答え1
1つの明らかな問題は、作成したコピーが次のものでなければ実行可能ではないということです。できますが、umask
コピーするときにchmod
そのオプションを使用する方が簡単です。-p
cp -p /bin/busybox /tmp
他の潜在的な問題もあります。
/ tmpのファイルシステムが実行可能ファイルを受け入れない可能性があります。コピーを作成したら、そのコピーがシステムで実際に実行されていることを確認する必要があります。同様のコマンドを使用できます/bin/busybox echo test
。
状況に応じてさらに困難があります。 rootfsが利用できないときにこの関数を呼び出そうとします。残念ながら、/tmp
ルートの下にもマウントされます。ただし、rootfsにアクセスせずにカーネルにアクセスするのに十分な情報がカーネルにある場合は、/tmp
アクセスできます。 60秒後にテストすると情報がまだメモリに残っている可能性がありますが、実行後数日が経過するとエラーが発生した場合、情報はメモリに残りません。
システム障害後にアクセスを必要としないようにするには、/tmp
ファイルシステムにアクセスせずに直接アプレットを呼び出すように構成されたBbusyboxを使用できます。その後、Busybox シェルでスクリプトを実行して/tmp
状況を確認し、再起動を試みます。
ウォッチドッグをチェックしてみることもできます。