我有一个脚本写入两个服务器的两个日期时间的文件。此脚本每分钟启动一次,但存储的第二个脚本并不总是相同。
例如:
2015-12-16 0:16:01.864 2015-12-16 0:16:01.972
2015-12-16 0:17:01.241 2015-12-16 0:17:01.350
2015-12-16 0:18:01.626 2015-12-16 0:18:01.735
2015-12-16 0:19:02.102 2015-12-16 0:19:02.210
正如你所看到的那样,第四行写的是02秒,而不是01。
在crontab我遇到这种情况:
* * * * * root cd /home/Project; ./PollDateServer.sh >/dev/null 2>&1
谢谢
答案 0 :(得分:-1)
如果您每分钟启动一次脚本,您可以尝试“尝试”:
* * * * * echo 'cd /home/Project; ./PollDateServer.sh' | at now + 1 minutes
必须安装“at”包!
修改强>
没有“at”的更准确的版本:
* * * * * sleep $(echo 60-$(date '+\%S.\%N') | bc); cd /home/Project; ./PollDateServer.sh
到目前为止的准确性:
22:10:00.007780247
22:11:00.003994573
22:12:00.007836359
22:13:00.005249502
22:14:00.003309822
22:15:00.004220122
22:16:00.004105306
22:17:00.006213730
22:18:00.006020664
22:19:00.003666325
它是如何运作的:
$ date '+%S.%N'
17.416097038
...给出当前的秒和纳秒
$ echo 60-$(date '+%S.%N')
60-17.416097038
...生成一个表达式来计算下一整分钟的剩余秒数和纳秒数。
$ echo 60-$(date '+%S.%N') | bc
42.583902962
...计算下一整分钟的剩余秒数和纳秒数
......最后睡了很长时间:
$ sleep $(echo 60-$(date '+%S.%N') | bc); date '+%H:%M:%S.%N'
12:10:00.004634130
...休眠计算时间并返回当前时间