18:00 关机和 18:00 关机有什么区别?

yan*_*ang 30 shutdown centos at

at 18:00 shutdown now并且shutdown 18:00,他们是否启动了相同的服务?它们的工作方式相同吗?

wur*_*tel 48

at 18:00 shutdown now创建一个“at”作业,由at守护程序或守护程序在指定时间执行cron,具体取决于您的系统。

shutdown 18:00在您的 shell 中启动一个进程,等待指定的时间,然后执行关闭。例如,如果您的 shell 会话终止,则可以终止此命令。

大多数情况下的最终结果是相同的:系统在 18:00 关闭。

一个区别是,如果使用at,作业将被存储,如果系统在 18:00 之前通过其他方式关闭,再次启动时作业仍将等待运行;如果时间已经过去,将立即执行关机,这可能是非常意外的。

另一个区别是shutdown 18:00/run/nologin在预定时间前 5 分钟创建一个文件,以防止人们在那一刻之后登录。还将发送广播消息以警告登录用户系统即将关闭。

您需要考虑这些差异来决定使用哪个。

  • 有一位钻石版主没有阅读[问]。(-: 你会发现这个问题是四年前在 https://unix.stackexchange.com/questions/147643/ 上提出的。 (3认同)

Jde*_*eBP 23

现在,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运行登录会话上下文。后者可能更宽容,允许(例如)登录到活动登录会话的非特权用户关闭系统。

进一步阅读