use*_*ser 6 shell sleep shell-script date time
我想写一个给定日期(天-小时-分钟)的外壳,例如
10:00 AM Sun
2:30 PM Mon
...
Run Code Online (Sandbox Code Playgroud)
它一直睡到那个确切的日期和时间。我认为一种方法是,我可以获得当前日期并计算差异?然后将其转换为秒并在该时间内睡眠。
但是,我不太确定如何使用 shell 脚本来做到这一点?
#!/bin/bash
now=$(date '+%A %W %Y %X')
date = 2:30 PM Mon
difference = ??
sleep difference
Run Code Online (Sandbox Code Playgroud)
如果允许用户使用at
命令,这是完美的用法:
$ at 08:00 022116
at> myscript.sh
at> <----------- ctrl-d here
job 9 at 2016-02-21 08:00
Run Code Online (Sandbox Code Playgroud)
如果您收到类似“用户 blah 无法运行at
”的消息,请要求系统管理员将此用户添加到at.allow
文件或从at.deny
文件中删除,具体取决于它在您的环境中的使用方式。
当然,除非您希望这天长时间的睡眠发生在您的脚本中间。即使这样,您也可以将脚本分成两部分,将要保留的变量写入一个文件,当时间到了并且脚本的第二部分执行时,它可以从存储的文件中读取这些变量。