本当に特別な理由で強制されていない場合は、次のことをお勧めしません。
kill -SEGV 1 # should generate a core dumps and kernel panic
kill -ABRT 1 # should generate a core dumps and kernel panic
kill -9 1 # On old systems worked nowadays not
それは荒く、残忍で、電源コードを抜くのとほぼ同等と考えることができます ...
正しい方法はあるshutdown -h now
とsudo
、必要なときに前に。
たぶん私は合法的な方法を言う必要があります。以下を参照してくださいtl; dr。
いくつかの言葉、別名、物語、第1章
最初は初期であり、それは最後まで続きます。
Linux全体は、init [ 1 ] [ 2 ]の愛情のこもったケアに依存しています。それにも関わらず、ある程度の恩恵がないわけではありませんが、優れた主ルートユーザーがこの愛を裏切り、議論の余地のない()順序で突然開始することができました。(エチケットの本は、カウント、公爵、マーキスのユーザーが前に呼び出すように規定しています)。 kill
-9
sudo
その後、一部のウィザードはinitを保護するために魅力を作りました(の本からman 2 init
)
プロセスID 1であるinitプロセスに送信できるシグナルは、initがシグナルハンドラーを明示的にインストールしたシグナルのみです。これは、システムが誤って停止しないようにするために行われます。
(我々のスパイが報告[ U1 ] initは1 HUP 6 ABRT 11 SEGV 15 TERM 30 PWR 2 INT 10 USR1 14 ALRM 17のCHLD 32を処理すること)
したがって、良好な主のルートユーザーが ニュースを知ると、コマンドを変更kill -ABRT 1
またはkill -SEGV 1
通常生成することカーネルパニックとコアダンプ。
ので、それは動作しますinitが実行する最初のプロセスであり、PID番号1をとる [ 図2b ]。
これは安全ではなく、賢明ではなく、悪い前兆と呪いの先駆けだと感じますが、実質的に手を入れてプラグを抜くことができない場合は...
呪い:ログに書き込むことはなく、すべてのプロセスを強制終了して終了を待つことはなく、iノードを適切に更新することもHDDに書き込むことも、ファイルシステムをアンマウントすることもありません。グラフィカルウィンドウやシェルの履歴、想像を超えた他の多くのオプションを保存することを気にしないでください。電源コード、またはラップトップの場合はバッテリーを抜くのとほぼ同じです。
正しい方法は
「非ノビス、ドミネ、非ノビス、sed nomini tuo da gloriam。」、テンプル騎士団のモットーです。 合法的な(正しい)方法が使用することである[ 3 ]
shutdown
sudo shutdown -h now
シャットダウンは、システムを安全な方法で停止するよう手配します。ログインしているすべてのユーザーには、システムがダウンしていることが通知されます...
しかし、-h now
彼らはそうするのに十分な時間がないでしょう...
いくつかの言葉、別名、物語、第2
章昔々、Unixの人々の上空からいくつかの論理ステップが感じられました:
システムプロセスが強制終了され、ファイルシステムがアンマウントされると、システムは自動的に停止/電源オフまたは再起動します。これは、haltまたはrebootコマンドを使用して行われます。このコマンドは、変更をディスクに同期してから、実際の停止/電源オフまたは再起動を実行します。[ 4 ]
確かに、最近は、私たちは3モイラの存在に任意のより信用していない[ 5 ] のLinuxの世界、reboot
、poweroff
及びhalt
[ 6 ]:現代科学のls -l $(which poweroff halt reboot)
とのいずれかをman reboot
、この暗黒時代に新たな光を拡散し、私たちを明らかにするすべてのオプションを解析する真のコマンドが1つだけ存在するため、コマンド名と矛盾するアクションを最終的に自由に求めることができます。(halt -p
またはreboot -p
for poweroff
、shutdown -r
for reboot
...)
今そのすべてすべてについて明確かつ快適であるように見えた、噂が請求[ 7 ]という地下のsystemdにツールセット [ 8 ]回転全体気付か残し行ったoverworldを。後方互換性シムの軍隊のおかげで、リブート、電源オフ、停止[ 6 ]、さらにはtelinit [ 9 ]およびシャットダウン[ 3 ]がすべて新しいキングsystemctl [ 10 ]に既にバインドされていることにまったく気付きませんでした。JdeBP The Bard [ 9 ]の元の声から話全体を聞いてください。私にはもう息がありません。
あなたがUbuntuカルトの信奉者であるならば、あなたはまだこれらの主張[ 11 ]のすべてにしばらく気づいているかもしれません。
真ん中の地球halt -f
、init
、telinit
、systemctl
速く正確なものよりますが、同様に賢明な解決策を検索します。
systemctl --force --force poweroff # the most close to kill -9 1
systemctl --force poweroff # rough but still safe
sudo halt -f # rough
sudo telinit 0 # or 6 # safe
kill -SIGINT 1 # cause reboot as the reboot command
kill -SIGRTMIN+4 1 # cause shutdown as the halt command
systemdになっているかどうかは、すべての正しいshudown手順を呼び出さずにコンピューターを停止できるはずです(より高速です)。
halt -f
:オプションを指定する-f
(必要なことに注意-f
して、上記のコマンドでシャットダウン手順を避けるために)、sudo poweroff -f
または多分にsudo reboot -f -h
。実際、シャットダウンの呼び出しを回避するman reboot
オプション-f
を指定する必要性について(および同等のものから)読むことができます。
--forceで呼び出されたとき、またはランレベル0または6で呼び出されたとき、このツールはreboot(2)システムコール自体を呼び出し(REBOOTCOMMAND引数を渡して)、システムを直接再起動します。
それ以外の場合、これは REBOOTCOMMAND引数を渡さずに、適切な引数でshutdown(8)ツールを呼び出すだけです。
-f、--force
shutdown(8)を呼び出さず、代わりにnameから期待される実際のアクションを実行します。
さらに、telinit
[ 2b ]を使用できます(またはinit
直接)
sudo telinit 0 # or 6
initにランレベルを変更するように指示します...しかし、もしそうなら、なぜそれを直接殺さないのですか?
systemdでは、unwise doubleオプションを使用できます --force --force
systemctl --force --force poweroff
systemctlマニュアルからの読み取り[ 10 ]
-f、-force
enableとともに使用すると、既存の競合するシンボリックリンクを上書きします。
使用する場合halt
、poweroff
、reboot
またはkexecを、すべてのユニットをシャットダウンせずに選択された動作を実行します。ただし、すべてのプロセスは強制的に強制終了され、すべてのファイルシステムは読み取り専用でマウント解除または再マウントされます。したがって、これは抜本的ですが、即時の再起動を要求する比較的安全なオプションです。これらの操作に--forceを2回指定すると、プロセスを終了したりファイルシステムをアンマウントしたりすることなく、すぐに実行されます。警告:これらの操作のいずれかで--forceを2回指定すると、データが失われる可能性があります。
Ps> JdeBP The Bard [ 7 ]のテールからバリアントについてのインスピレーションを受けてください。