再起動を妨げる要因は何ですか?

再起動を妨げる要因は何ですか?

Linuxでコマンドを実行した後、システムの再起動を妨げる原因をどのように追跡できますかsudo reboot

私はいつもこれでランレベルの切り替えが発生し、最終的に再起動すると思っていましたが、何度も再起動するように指示された後でもマシンが再起動されなかったため、今は困惑しています。

ベストアンサー1

システムが中断することなくプロセスを実行したときに、この問題が発生したことがあります。 Apacheプロセスがディスク上で何かを待っているように見える非常に悪い状況があります。殺されない

私が知っている限り、LinuxはシステムをシャットダウンするとSIGTERMプロセスにsを送信し、SIGKILL数秒後にあえて不従順にしたい人にsを送信します。ただし、これらのプロセスが中断できない状態の場合、カーネル自体はそれを保護します。これは、保留中のシステムコールにI / O操作が含まれているときにデータが失われることを防ぐのに役立ちます。今私は本当にできる他のことを思い出さない捨てる* aSIGKILLなので、答えの他の要素をここにインポートできます。

*これはやや単純化された(間違っていませんが)見る方法であり、信号の非同期性を考慮しません。この点の詳細については、Gilesのコメントを参照してください。

しかし、中断のないプロセスの場合...

再起動せずに中断できないプロセスを終了するには:どのようにシステムコールを終了します。通常、電源スイッチを押さずにこれを行う最も効率的な方法は、電源コードを引くことです。カーネルハッカーになり、ドライバにTASK_KILLABLEを使用させることもできます。LWN 記事

次のコマンドを使用して、中断することなく実行中のすべてのプロセスのリストを取得できます。

$ ps -eo 'state,pid,args' | awk '$1 == "D" {print;}'
$ ps -eo 'state,pid,args' | grep -E '^D'
$ ps -eo 'state,pid,args' | egrep '^D'
...

おすすめ記事