"reboot -f"コマンドがブロックされたことをどのように証明できますか?

組み込みLinuxデバイス用のシェルスクリプトを作成するとき、私たちの大学はreboot/reboot -fコマンドの後に無限ループを追加して、再起動中にスクリプトの後半が実行されないようにする傾向があります。しかし、これがreboot -f実際にブロックコマンドであるかどうか疑問に思います。

私はそれを試してみreboot; touch testましtestた。したがって、一般はreboot非ブロックでなければなりません。ただし、reboot -f ; touch testコマンドを実行しても生成されませんtest。一部では、touchtouch`が実行される前にシェルがシャットダウンされた可能性があると主張する可能性があるため、これは十分な証拠ではありません。

実際にはrebootsysvinit実行可能ファイルへのシンボリックリンクですhalt

誰でも増やしたり説明したりできますか?ありがとうございます。

ベストアンサー1

オペレーティングシステムによって、rebootこれは大きく異なる場合があります。私にとっては、rebootsystemctlへのシンボリックリンクでした。

ls -la /sbin/reboot
lrwxrwxrwx 1 root root 14 maj  3 13:30 /sbin/reboot -> /bin/systemctl

systemctl rebootこの場合、whichと同じですsystemctl start reboot.target --job-mode=replace-irreversibly --no-block(systemctlのマニュアルページを参照)。

-forceこの場合、再起動プロセスの速度のみが向上し、ファイルに触れる前にシェルが終了する可能性があります。
これを避けたい場合は、次のようにしてみてくださいsystemctl start reboot.target --job-mode=replace-irreversibly。しかし、再起動ブロックがこのように実装できるかどうかはわかりません。

ただし、システム化されていない環境ではreboot状況が異なる場合があります。

私の考えでは、無限ループはここで最もクリーンなソリューションではなく、exit再起動後に実行できます。

おすすめ記事