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