at 18:00 shutdown now
そしてshutdown 18:00
、同じサービスを発売していますか?彼らは同じように動作しますか?
答え1
at 18:00 shutdown now
at
cron
システムによっては、デーモンまたはデーモンによって指定された時間に実行される「at」ジョブを作成します。
shutdown 18:00
シェルでプロセスを開始し、指定された時間待ってからシャットダウンを実行します。シェルセッションが終了したら、このコマンドを終了できます。
ほとんどの場合、最終結果は同じです。システムは18:00に終了します。
at
1つの違いは、Unexpectedを使用する場合
もう1つの違いは、shutdown 18:00
予約時間の5分前にファイルを作成し、/run/nologin
その時間以降にログインできないことです。また、ログインしたユーザーにシステムがすぐにシャットダウンすることを警告するためにブロードキャストメッセージが送信されます。
使用するものを決定するには、これらの違いを考慮する必要があります。
答え2
今systemdに答えがあります。
CentOS 7があり、システムオペレーティングシステムがある場合、答えは異なります。
at 18:00 shutdown now
at
予約は依然としてサブシステムを介して行われますが、shutdown
コマンドと直接呼び出すコマンドはshutdown 18:00
異なります。実際にはシステム化されたプログラムですsystemctl
。 systemctl
仕事を別様にしなさい。
まず、この例とよく似てsystemctl
予約された終了要求がデーモンによって処理されるように送信されます。at
ただし、これはサブシステムではなくsystemdデーモンlogind
(systemd-shutdownd
2015年5月にsystemdから削除され、CentOS 7の後続のマイナーバージョンにつながった変更)ですat
。 systemctl
内部プロトコルを(システム全体の)デスクトップバスエージェントに渡しますlogind
。
したがって、この場合のようにカウントダウンしてメッセージを生成するプロセスはat
ありません。したがって、スケジュールに影響を与えないログアウトが可能であり、キャンセルはログインセッションのフォアグラウンドプロセスを中断/終了するほど簡単ではありません。同様に。shutdown
wall
at
そこまだat
この場合とは異なり、メッセージはから送信されますlogind
。この状況とは異なり、スケジュールされat
たタスクはシステムの再起動後も持続しないため、実際のシャットダウン時にスケジュールされたタスクはキャンセルされます。そこはいファイルシステム内のファイルですが、/run/systemd/shutdown
その下に非永続ストレージがあります。
別の違いは一つ一人の人がat
一度に複数のジョブを送信できますが、ポリシーツールキットは、ログインセッションコンテキストshutdown
で実行されるジョブに適用されるルールat
とは異なる、非shutdown
ログインセッションコンテキストでジョブとして実行されるルールを適用します。後者がより寛大である可能性があります。特権のないシステムをシャットダウンするためにアクティブなログインセッションにログインするユーザー。