Answers:
at 18:00 shutdown now
创建一个“ at”作业,该作业由at
守护程序或守护程序在指定时间执行cron
,具体取决于您的系统。
shutdown 18:00
在shell中启动一个进程,该进程将一直等待到指定时间,然后执行关闭操作。如果您的Shell会话已终止,则可以终止此命令。
在大多数情况下,最终结果是相同的:系统在18:00关闭。
一个区别是,如果使用at
,则将存储作业,并且如果在18:00之前通过其他某种方式关闭了系统,则在再次引导时,该作业仍将等待运行;如果时间已经过去,则将立即执行关机,这可能是非常意外的。
另一个区别是,shutdown 18:00
它将/run/nologin
在预定时间之前5分钟创建一个文件,以防止人们在此之后登录。此外,还将发送广播消息,以警告已登录的用户系统即将关闭。
您需要考虑这些差异来决定使用哪个。
nohup
或以disown
其他方式,如果注销通常会杀死正在运行的后台进程。不同的系统为此可能具有不同的默认值。(我假设确实有一个sudo shutdown
进程仍在运行,而只是发出init
启动关闭计时器的信号。后者实际上可能是发生了什么,但是我最近没有检查过。哦,但是@JdeBP有;请参见答案)
at
使其通过cron
代替atd
?
如果您使用的是CentOS 7,则您使用的是systemd操作系统,答案是不同的。
at 18:00 shutdown now
仍然可以通过at
子系统进行调度,但是该shutdown
命令以及您直接使用调用的命令shutdown 18:00
是不同的。它实际上是systemd的systemctl
程序。 systemctl
事情有所不同。
首先,systemctl
发送调度的关闭请求以由守护进程处理,就像在这种at
情况下一样。但是,具体来说,这是一个系统化的守护程序logind
(该systemd-shutdownd
守护程序已于2015年5月从systemd中删除,此更改自此渗透到了CentOS 7的更高次要版本中),而不是at
子系统。 systemctl
与(系统级)Desktop Bus代理通信的内部协议,该代理又与进行通信logind
。
因此,就像在这种at
情况下一样,没有任何shutdown
过程可以倒计时并生成wall
消息。因此,可以注销,这将不会影响计划,并且取消并不像仅中断/终止登录会话的前台进程那样简单。就像at
。
目前仍有消息,不像在at
情况下,但它们是由发行logind
。同样与at
情况不同,计划的作业不会在系统重新启动后持续存在,因此实际关闭会取消计划的作业。有是在文件系统中的文件,但它是在/run/systemd/shutdown
其非永久存储。
进一步的区别是,一次只能执行一次计划内关闭,而一次可以提交多个at
作业,Policy Kit会将规则shutdown
在非登录会话上下文中应用为at
作业,该规则与shutdown
在Windows 2000中运行的规则不同。登录会话上下文。后者可能更宽松,从而允许(例如)登录到活动登录会话的非特权用户关闭系统。
shutdown 18:00
在您的shell中启动一个等待的进程”。如果在此之前注销该怎么办?