/ tmpでbusyboxアプレットを実行します。

/ tmpでbusyboxアプレットを実行します。

ヘッドレスLinuxデバイスに問題があります。簡単に言うと、rootfsが利用できなくなり、すべてがブロックされます。電源を入れ直すことが唯一の方法であり、手動で電源を入れ直すのではなく、自動的に再起動したいと思います。

/tmprootfsとは別のフォルダがあります。

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状況を確認し、再起動を試みます。

ウォッチドッグをチェックしてみることもできます。

おすすめ記事