web-dev-qa-db-ja.com

systemd / initがない場合(たとえば、init = / bin / bashを使用している場合)に電源をオフにする方法は?

poweroffは、DBusを介してsystemdに接続できないことを訴えます(もちろん、生きていません)。私はsyncに続いてkill $$を実行しました。pid1が死ぬとカーネルの電源がオフになり、カーネルパニックが発生すると考えました。次に、電源ボタンを押し続けて電源を強制的にオフにしました。

このシナリオで電源を切る最も適切な方法は何ですか?

9
JoL

マウントしたファイルシステムをアンマウントします。ルートファイルシステムは特別な場合です。これにはmount / -o remount,roを使用できます。 Linuxでは、umount /も前のコマンドに効果的に変換されるため、たまたま機能します。


とはいえ、アンマウントしすぎることを心配する必要はありません。

  1. EATシステムパーティションで使用されているFATなどの古いファイルシステム、またはジャーナリングまたは同等の機能を実装していないext2をマウントしました。最新のファイルシステムでは、syncで十分であり、ファイルシステムは次回の起動時に非常に迅速に修復されます。
  2. ファイルシステムに書き込む実行中のプロセスを残した可能性があり、クリーンにシャットダウンするつもりでした。その場合、ファイルシステムをumountしようとすると便利です。umountが失敗し、ビジーエラーが表示されて、残りのライターについて通知するからです。

上記は重要な部分です。その後、poweroff -fを使用してハードウェアの電源を切ることもできます。または、reboot -fで再起動します。

systemd固有のpoweroff -fに相当するものがあります:systemctl poweroff -f -f。ただし、poweroff -fは同じことを行い、systemdは、SysV互換性なしでビルドされた場合でも、このコマンドをサポートします。


技術的には、USBハードドライブがWindowsの「安全な取り外し」または同等の機能を必要とすると文書化されていたことを覚えています。しかし、この要件は電源障害に対して安全ではなく、Linuxは通常のシャットダウン中にこれを行いません。ハードドライブが回転している間は、ハードドライブをジョギングしないでください。プラグを抜こうとする場合も含まれます。完全に電源をオフにすると、ドライブの回転が停止します。あなたはおそらくそれが止まらないかどうかを聞いたり、感じたり、見ることができます:-)。

10
sourcejedi

以下の2つのコマンドを実行します。

echo s > /proc/sysrq-trigger    <= For sync
echo o > /proc/sysrq-trigger    <= For shutdown the system

カーネルでマジックキーが有効になっていると仮定

5
SHW

わかりました、それで私はexec init。そこから、後でpoweroffができるでしょう。しかし、もっと良い代替案はあるのだろうか。

4
JoL

事実上、touは reboot(2) syscallを呼び出します。

これを行うには、次の2つの方法があります。

  1. _reboot -f_または_poweroff -f_を実行すると、reboot(2)が直接呼び出されます。

  2. (GUI端末エミュレーターではなく)実際のLinux仮想端末を使用している場合は、 Ctrl+Alt+Delete

キーボードショートカットは一部のユーザー空間プログラム(通常はinit)によって無効にできることに注意してください。無効にすると、ショートカットは代わりにinitにシグナルを送信します。

上記のコマンドはすべて、すべてのディスクをアンマウントするか、読み取り専用として再マウントし、同期を実行した後に実行する必要があります。そうしないと、書き込まれていないデータが失われる可能性があります。シェルが実行中の唯一のプロセスである場合、同期で十分な場合があります。

3
Lie Ryan

Magic SysRqキー( https://en.wikipedia.org/wiki/Magic_SysRq_key )を使用してコンピューターの電源を切ることができます。

適切にシャットダウンするには、以下を使用できます(Wikipediaの引用フォーム)。

マジックSysRqキーの一般的な使用法は、通常はロックされているLinuxコンピューターの安全な再起動を実行することです(省略形[〜#〜] reisub [〜#〜])。これにより、再起動時にfsckが必要になるのを防ぎ、一部のプログラムに、保存されていない作業の緊急バックアップを保存する機会を与えることができます。 [5] QWERTY(またはAZERTY)ニーモニック: "[〜#〜] r [〜#〜] aising[〜#〜] e [〜#〜]lephants[〜#〜] i [〜#〜 ]s[〜#〜] s [〜#〜]o [〜#〜] u [〜#〜]非常に[〜#〜] b [〜#〜] oring "、"[〜#〜] r [〜#〜]eboot[〜#〜] e [ 〜#〜]ven[〜#〜] i [〜#〜]f[〜#〜] s [〜#〜]システム[〜#〜] u [〜#〜]terterly[〜#〜] b [〜#〜]roken "または単に「BUSIER」という単語を逆方向に読み、覚えるためによく使用されます次のSysRq-keysシーケンス:

  • 国連Raw(Xからキーボードの制御を取り戻す)、
  • tErminate(すべてのプロセスにSIGTERMを送信し、正常に終了できるようにする)、
  • kIll(すべてのプロセスにSIGKILLを送信し、プロセスを即座に強制終了します)、
  • Sync(データをディスクにフラッシュ)、
  • Unmount(すべてのファイルシステムを読み取り専用で再マウント)、
  • Bおっと。

ただし、最後のBを[〜#〜] o [〜#〜]で置き換えます(azerty/qwertyの場合) "power[〜#〜] o [〜#〜]ff "

1
breversa