看来我可以通过指定时间或分钟来关闭使用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答案建议让它只运行一次,但我从未使用它,所以我不能保证它.