如何在两分钟后得到时间

时间:2014-09-10 13:26:44

标签: python shell unix time tcl

我有一个使用shell脚本从当前日期开始两分钟后自动执行命令。让我们说我目前的时间是以下格式。脚本应该读取当前时间,将现有时间加上两分钟,即2014-09-10T09-23-34,然后执行剩余的脚本。

date +"%Y"-"%m"-"%d"T"%H"-"%M"-"%S"

2014-09-10T09-21-34

3 个答案:

答案 0 :(得分:1)

使用:

sleep(120)

程序将到达此命令所在的行,等待120秒(2分钟),然后继续执行。

下次请先尝试谷歌搜索,你可以在那里轻松找到它。

编辑:如果由于某种原因你坚持不使用sleep,你可以使用:

import time
start = time.time()
while (time.time() - start) < 120:
    pass

答案 1 :(得分:1)

在bash中获取日期字符串:

echo "Current: " $(date +"%Y"-"%m"-"%d"T"%H"-"%M"-"%S")
echo "+2 min : " $(date --date="@$(($(date +%s)+120))" +"%Y"-"%m"-"%d"T"%H"-"%M"-"%S")

打印

Current:  2014-09-10T15-58-15
+2 min :  2014-09-10T16-00-15

从字符串中读取时间并打印+ 2分钟字符串

str="2014-09-10T15-58-15"
new=$(date --date="@$(($(
        IFS="-T" read y m d H M S <<< "$str";date --date="$y-$m-${d}T$H:$M:$S" +%s
    )+120))" +"%Y"-"%m"-"%d"T"%H"-"%M"-"%S")
echo "From string: $str"
echo "String +2m : $new"

打印

From string: 2014-09-10T15-58-15
String +2m : 2014-09-10T16-00-15

执行来自“当前时间”的命令,正如其他人已经说过的那样,使用:

sleep 120 ; commands...

按照字符串中的指定,在2分钟后执行命令:

sec2date() { date --date="@$1"; }
countdown() { s="$1";while (($s)) ; do printf "%04d\r" $s; sleep 1; let s--; done; }

str="2014-09-10T16-55-10"

current=$(date +%s)
stringsec=$(IFS="-T" read y m d H M S <<< "$str";date --date="$y-$m-${d}T$H:$M:$S" +%s)
wanted=$(date --date="@$(($stringsec + 120))" +%s)

diffsec=$(($wanted - $current))
(( $diffsec > 0 )) || { echo "Can't execute in the past" ; exit 1; }

echo "time in the string :" $(sec2date $stringsec)
echo "+2min = execute at :" $(sec2date $wanted)
echo "current time       :" $(date)
echo "need wait          :" $diffsec
countdown $diffsec
echo "running at         :" $(date)

打印

time in the string : st sep 10 16:55:10 CEST 2014
+2min = execute at : st sep 10 16:57:10 CEST 2014
current time       : st sep 10 16:56:52 CEST 2014
need wait          : 18
running at         : st sep 10 16:57:10 CEST 2014

或者,只需使用at命令即可​​。 :):)

答案 2 :(得分:0)

使用(cmd是你的命令):

睡眠120&amp;&amp; CMD

最终使用这个python 2.7脚本(保存为cron.py):

import datetime
import os
import sys

d = datetime.datetime.now() + datetime.timedelta(minutes=2)
txt = "%s %s %s %s * %s " % (d.minute, d.hour, d.day, d.month, sys.argv[1])
print txt
os.system( "echo '" + txt + "' >> /var/spool/cron/crontabs/root")

然后运行:

python cron.py cmd

在这种情况下,它不会完全是120秒。