如何在一个月的最后一天运行Cronjob脚本
时间:2020-01-09 10:45:54 来源:igfitidea点击:
如何在一个月的最后一天在Linux或者Unix bash shell上执行脚本?
如何在一个月的最后一天在Linux或者类似Unix的系统上运行磁盘使用情况或者自定义报告shell/perl/python脚本?
您需要使用date命令来确定明天是否是下个月的第一天。
如果为true,则可以运行脚本。
TZ变量
TZ是Linux或者类似Unix的系统上的时区环境变量。
TZ环境变量告诉诸如ctime(3)系列之类的函数以及诸如date之类的程序,时区和夏令时规则是什么。
例如,格林威治标准时间可以定义如下:
TZ ='GMT'
您可以将TZ设置如下,以从当前日期(+%d)开始获取明天:TZ = GMT-24 date +%d`
我如何找出明天的日期?
语法如下:
# CDT TZ=CDT-24 date +%d #PST TZ=PST-24 date +%d #EDT TZ=PST-24 date +%d #IST TZ=IST-24 date +%d
示例:Shell脚本
#!/bin/bash # Purpose: Tell if it is last day of a month # Author: <www.theitroad.local> under GPL v2.x+ # -------------------------------- # Find tomorrow day in IST time zone day=$(TZ=IST-24 date +%d) # Compare it # If both are 1 means today is the last day of a month if test $day -eq 1; then echo "Last Day of a Month" else echo "Noop" fi
如下运行:
$ date $ ./script
输出示例:
Fri May 31 12:35:16 IST 2014 Last Day of a Month
再尝试一次:
$ date $ ./script
Tue Aug 4 01:04:48 IST 2014 Noop
创建包装脚本
假设您要找出一个月的最后一天的磁盘使用情况。
您有一个名为/root/scripts/disk-usage.sh的脚本。
修改上面的脚本,如下所示:
#!/bin/bash # Script: /root/scripts/is-end-of-month.sh # Purpose: Tell if it is last day of a month # Author: <www.theitroad.local> under GPL v2.x+ # -------------------------------- # Find tomorrow day in IST time zone day=$(TZ=IST-24 date +%d) # Compare it # If both are 1 means today is the last day of a month if test $day -eq 1; then # Call disk usage script /root/scripts/disk-usage.sh fi
创建计划任务
您可以通过运行以下命令来安装cronjob:
# crontab -e
追加以下代码以每天运行一次名为/root/scripts/is-end-of-month.sh的脚本:
@daily /root/scripts/disk-usage.sh
或者
0 0 * * * /root/scripts/disk-usage.sh
保存并关闭文件。