GeekHub

Shell定时执行命令脚本

分享一个自己写的简单shell定时执行命令的脚本:

#!/bin/bash
target_time=$(date -d "2022-08-26 11:28:00" +%s)
while true
do
        now=$(date +%s)
        if [ $now -gt $target_time ]; then
                echo "$(date -d @$now)"
                # Do what u want to do here
                break
        else
                clear
                echo "Please wait $(expr $target_time - $now) second(s)"
                echo
                echo "Target Time:"
                echo "$(date -d @$target_time)"
                echo "Now time:"
                echo "$(date -d @$now)"
                sleep 1
        fi
done

通过将格式化时间转为时间戳,然后对当前时间戳和目标时间戳对比大小判断时间是否达到。

在此简单介绍一下常用的date命令格式化时间和时间戳互转的命令:

(时间戳指的是从格林威治时间1970年1月1日0点0分0秒开始的累计时间)

#输出当前格式化时间
date
#输出当前时间戳(精确到秒)
date +%s
#输出当前时间戳(精确到纳秒)
date +%s%N
#将时间戳转换为格式化时间(只支持秒级时间戳)
date -d @1640966400
#将格式化时间转换为时间戳
date -d "2022/01/1 00:00:00" +%s

发表回复

您的电子邮箱地址不会被公开。