AI智能
改变未来

shell 之 每月最后一天的计算及cron设置


1, 计算方法

#!/bin/bash# month.lastday.sh# 指定月份,必须是 YYYYMM 格式if [[ $1 == \"\" ]]; then# 未指定,默认当月S_MTH=`date \"+%Y%m\"`elseS_MTH=$1fi# 第一种方法## 原理:打印月历、参数化、取最后一列## 解析日期字符串S_YEAR=${S_MTH:0:4}S_MONTH=${S_MTH:4:2}S_LAST_DAY=`cal $S_MONTH $S_YEAR | xargs | awk \'{print $NF}\'`echo $S_MTH$S_LAST_DAY# 第二种方法## 原理: 指定月份的下月1日,减1天,即为上月最后一天S_NEXT_MTH_FIRST_DAY=`date -d \"${S_MTH}01 1 months\" \"+%Y%m%d\"`S_LAST_DAY=`date -d \"-d $S_NEXT_MTH_FIRST_DAY -1 days\" \"+%Y%m%d\"`echo $S_LAST_DAY

程序输出

[ossNokia@bo-interface02 ~]$ ./month.lastday.sh2020073120200731[ossNokia@bo-interface02 ~]$ ./month.lastday.sh 2020062020063020200630[ossNokia@bo-interface02 ~]$ ./month.lastday.sh 2020122020123120201231[ossNokia@bo-interface02 ~]$ ./month.lastday.sh 2019012019013120190131[ossNokia@bo-interface02 ~]$ ./month.lastday.sh 2020022020022920200229[ossNokia@bo-interface02 ~]$ ./month.lastday.sh 2019022019022820190228[ossNokia@bo-interface02 ~]$

2, cron设置

59 23 28-31 * * /home/root/run.month.lastday.task.sh

3, 任务程序

#!/bin/bash# run.month.lastday.task.sh# 第一种方法S_MONTH_YEAR=`date \"+%m %Y\"`if [[ `date \"+%d\"` == `cal $S_MONTH_YEAR | xargs | awk \'{print $NF}\'` ]]; then# 这里编写你自己的功能代码df -Thfi# 第二种方法S_NEXT_MTH_FIRST_DAY=`date -d \"1 months\" \"+%Y%m%d\"`if [[ `date \"+%d\"` == `date -d \"-d $S_NEXT_MTH_FIRST_DAY -1 days\" \"+%d\"` ]]; then# 这里编写你自己的功能代码df -Thfi
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » shell 之 每月最后一天的计算及cron设置