如何在终端的特定日期时间关闭Linux?

看来我可以通过指定时间或分钟来关闭使用sudo shutdown.

有没有办法为关机指定日期时间?

解决方法:

您可以直接从shutdown命令执行此操作,请参阅man shutdown:

SYNOPSIS
   /sbin/shutdown [-akrhPHfFnc] [-t sec] time [warning message]

[...]

   time   When to shutdown.

所以,例如:

shutdown -h 21:45

这将在21:45运行shutdown -h.

对于不提供此功能的命令,您可以尝试以下方法之一:

A.使用at

at守护进程就是为此而设计的.根据您的操作系统,您可能需要安装它.在基于Debian的系统上,可以通过以下方式完成:

sudo apt-get install at

有三种方法可以发出命令:

>管道:

$echo "ls > a.txt" | at now + 1 min
warning: commands will be executed using /bin/sh
job 3 at Thu Apr  4 20:16:00 2013

>保存要在文本文件中运行的命令,然后将该文件传递给:

$echo "ls > a.txt" > cmd.txt
$at now + 1 min < cmd.txt
warning: commands will be executed using /bin/sh
job 3 at Thu Apr  4 20:16:00 2013

>您也可以从STDIN传递命令:

$at now + 1 min
warning: commands will be executed using /bin/sh
at> ls

然后,按CtrlD退出at shell. ls命令将在一分钟内运行.

您可以以[[CC] YY] MMDDhhmm [.ss]的格式给出非常精确的时间,如

$at -t 201403142134.12 < script.sh

这将在2014年3月14日21:34和12秒运行脚本script.sh.

B.使用cron(尽管这不是关闭的好主意)

另一种方法是使用cron调度程序,该调度程序旨在在特定时间执行任务.它通常用于将重复的任务,但您也可以给出特定的时间.每个用户都有自己的“crontabs”,可以控制执行哪些作业以及何时执行. crontab的一般格式是:

*     *     *     *     *  command to be executed
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- day of week (0 - 6) (Sunday=0)
|     |     |     +------- month (1 - 12)
|     |     +--------- day of month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

因此,例如,这将在每天14:04运行ls:

04 14 * * * ls

要为特定日期设置cronjob:

>通过运行crontab -e创建一个新的crontab.这将打开您喜欢的文本编辑器的窗口.
>将此行添加到刚刚打开的文件中.这个特殊的例子将在2014年3月15日的14:34运行,如果那天是星期五(那么,好吧,它可能运行不止一次):

34 14 15 5  /path/to/command        

>保存文件并退出编辑器.

This SO答案建议让它只运行一次,但我从未使用它,所以我不能保证它.

上一篇:Linux调度程序如何确定进程是I / O绑定还是CPU绑定


下一篇:我的linux系统使用哪个进程调度程序?