start reboot.target
とreboot
の間には、文書化された2つの違いがあります。ただし、start reboot.target
はctrl-alt-del.target
によってトリガーされるものです。
ctrl-alt-del.target
が--job-mode=replace-irreversibly
を省略しても問題ありませんか?これはどのような状況で異なる動作を引き起こしますか? systemctl reboot
に含まれているのはなぜですか?
man systemctl
再起動[arg]
システムをシャットダウンして再起動します。これは
start reboot.target --job-mode=replace-irreversibly
とほぼ同等ですが、すべてのユーザーに壁のメッセージを出力します。
man systemd.special
ctrl-alt-del.target:コンソールでControl + Alt + Delが押されると、systemdはこのターゲットを開始します。通常、これはreboot.targetにエイリアス(シンボリックリンク)する必要があります。
新しいジョブをキューに入れるとき、このオプションはすでにキューに入れられたジョブを処理する方法を制御します。 「失敗」、「置換」、「置換不可逆」、「分離」、「依存関係を無視」、「要件を無視」、または「フラッシュ」のいずれかをとります。デフォルトは「replace」ですが、isolateコマンドを使用して「分離」ジョブモードを意味する場合を除きます。
「失敗」が指定されており、要求された操作が保留中のジョブと競合する場合(具体的には、既に保留中の開始ジョブが停止ジョブに戻るか、またはその逆になる)、操作が失敗します。
「replace」(デフォルト)が指定されている場合、競合する保留中のジョブは必要に応じて置き換えられます。
「replace-不可逆」が指定されている場合、「replace」のように動作しますが、新しいジョブを不可逆としてマークします。これにより、将来の競合するトランザクションがこれらのジョブを置き換えないようにします(または、元に戻せないジョブがまだ保留されている間にキューに入れられることもありません)。取り消しできないジョブは、cancelコマンドを使用して取り消すことができます。
これは実用的な効果を示唆しています。 sleep.target
を使用して「ユニットをスリープ状態ロジックにフック」するとします。フックユニットにはDefaultDependencies=no
がないため、sysinit.target
...とConflict
に依存します。 shutdown.target
。
systemctl start reboot.target
を実行してすぐにsystemctl start suspend.target
を実行すると、フックユニットがshutdown.target
を停止するようです。現在、systemd-reboot.service
にはRequires=shutdown.target
があるため、停止/キャンセルする必要もあります。 (umount.target
はキャンセルしないでください)。
私はこれらの行に沿って動作の違いを確認しました systemdの課題追跡で欠陥として報告しました 。
reboot.target
ファイルのソースを読み取ると、ctrl-alt-del.target
がAlias=
で参照されていることがわかります。つまり、同じコマンドの別の名前であり、同じように機能します。
systemctl.cのソースコードを見ると を見ると、systemctl reboot
がreplace-irreversibly
オプションを渡すこともわかります。
したがって、見つけたリブートコマンドの3つのバリエーションはすべて同じように機能するようです:systemctl reboot
、reboot.target
およびctrl-alt-del.target
。
ドキュメントを改善する提案がある場合は、 systemdドキュメントのソースXMLファイル を変更して、プルリクエストを送信できます。