yang Asked: 2018-08-29 06:28:07 +0800 CST2018-08-29 06:28:07 +0800 CST 2018-08-29 06:28:07 +0800 CST 18:00 关机和 18:00 关机有什么区别? 772 at 18:00 shutdown now并且shutdown 18:00,他们是否启动了相同的服务?它们的工作方式相同吗? centos shutdown 2 个回答 Voted Best Answer wurtel 2018-08-29T06:36:43+08:002018-08-29T06:36:43+08:00 at 18:00 shutdown now创建一个“at”作业,该作业由at守护程序或cron守护程序在指定时间执行,具体取决于您的系统。 shutdown 18:00在您的 shell 中启动一个进程,该进程一直等待到指定的时间,然后执行关闭。例如,如果您的 shell 会话终止,则可以终止此命令。 大多数情况下的最终结果是相同的:系统在 18:00 关闭。 不同的是,如果使用at,作业将被存储,如果系统在 18:00 之前通过其他方式关闭,再次启动时作业仍将等待运行;如果时间已经过去,将立即执行关机,这可能是非常出乎意料的。 另一个区别是,shutdown 18:00它将在预定时间前 5 分钟创建一个/run/nologin文件,以防止人们在那一刻之后登录。还将发送广播消息以警告登录用户系统即将关闭。 您需要考虑这些差异来决定使用哪个。 JdeBP 2018-08-29T07:58:04+08:002018-08-29T07:58:04+08:00 现在,systemd 的答案。 如果你有 CentOS 7,你有一个 systemd 操作系统,答案就不同了。 at 18:00 shutdown now仍然通过at子系统进行调度,但是该shutdown命令以及您直接使用 调用的命令shutdown 18:00是不同的。它实际上是systemd的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作业,并且 Policy Kit 将应用规则以shutdown在非登录会话上下文中作为at作业运行,该作业不同于应用于在其中shutdown运行的规则登录会话上下文。后者可能更宽松,允许(例如)登录到活动登录会话的非特权用户关闭系统。 进一步阅读 我对这些用于关闭 Linux 服务器的命令有什么区别的回答? 运行`shutdown -h now`时出错
at 18:00 shutdown now
创建一个“at”作业,该作业由at
守护程序或cron
守护程序在指定时间执行,具体取决于您的系统。shutdown 18:00
在您的 shell 中启动一个进程,该进程一直等待到指定的时间,然后执行关闭。例如,如果您的 shell 会话终止,则可以终止此命令。大多数情况下的最终结果是相同的:系统在 18:00 关闭。
不同的是,如果使用
at
,作业将被存储,如果系统在 18:00 之前通过其他方式关闭,再次启动时作业仍将等待运行;如果时间已经过去,将立即执行关机,这可能是非常出乎意料的。另一个区别是,
shutdown 18:00
它将在预定时间前 5 分钟创建一个/run/nologin
文件,以防止人们在那一刻之后登录。还将发送广播消息以警告登录用户系统即将关闭。您需要考虑这些差异来决定使用哪个。
现在,systemd 的答案。
如果你有 CentOS 7,你有一个 systemd 操作系统,答案就不同了。
at 18:00 shutdown now
仍然通过at
子系统进行调度,但是该shutdown
命令以及您直接使用 调用的命令shutdown 18:00
是不同的。它实际上是systemd的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
作业,并且 Policy Kit 将应用规则以shutdown
在非登录会话上下文中作为at
作业运行,该作业不同于应用于在其中shutdown
运行的规则登录会话上下文。后者可能更宽松,允许(例如)登录到活动登录会话的非特权用户关闭系统。进一步阅读