crontab月底月末执行

2014-08-27

如何设定crontab在每月最后一天执行。

方法1:
如果没有特别需要,指定28日执行即可。
0 4 28 * * /home/a.sh;

方法2:
for Linux
0 8 28-31 * * [ `date -d tomorrow +\%e` -eq 1 ] && /home/a.sh;
for other Unix,BSD
0 8 28-31 * * [ `echo \`cal\` | awk '{print $NF}'` -eq 1 ] && /home/a.sh;

方法3:
单独靠crontab判断比较复杂,所以把判断部分写到执行脚本中
#!/bin/bash
. ~/.bash_profile
ym=`date +%Y%m`
nm=`date -d '1month' +%Y%m`

vts_src=VIEWER_DATA_TS
vts_dst=VIEWER_DATA_TS_${ym}
viewer_data_ts1=/data3/oracle/viewer_data_ts_${nm}_1.dbf

today=`date +%d`
last_day=`cal | xargs | awk '{print $NF}'`
if [ "$today" != "$last_day" ];then
exit 1
fi

sqlplus user/123456 << EOF set hea off alter tablespace $vts_src rename to $vts_dst; CREATE TABLESPACE $vts_src DATAFILE '$viewer_data_ts1' SIZE 512M AUTOEXTEND ON NEXT 256M MAXSIZE UNLIMITED BLOCKSIZE 8k; quit; EOF

分类:Linux编程 | 标签: |

相关日志

评论被关闭!