crontab

1.确保系统服务启动
systemctl status crontab
二、修改/etc/crontab
天天凌晨三点,执行123.sh脚本文件,正确的和错误的日志都输出到123.log文件中
0 3 * * *  /bin/bash  /usr/local/sbin/123.sh >/tmp/123.log 2>/tmp/123.log
由于是天天三点执行脚本,因此能够写成追加,天天都去记录日志
0 3 * * *  /bin/bash  /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log
每条任务调度执行完毕,系统都会将任务输出信息经过电子邮件的形式发送给当前系统用户,这样日积月累,日志信息会很是大,可能会影响系统的正常运行,所以,将每条任务进行重定向处理很是重要。 例如,能够在crontab文件中设置以下形式,忽略日志输出:
0 3 * * *  /bin/bash  /usr/local/sbin/123.sh >/dev/null 2>&1
“/dev/null 2>&1”表示先将标准输出重定向到/dev/null,而后将标准错误重定向到标准输出,因为标准输出已经重定向到了/dev/null,所以标准错误也会重定向到/dev/null,这样日志输出问题就解决了。
3.etc/crontab解释
----------
SHELL=/bin/bash
#SHELL变量指定了系统要使用哪一个shell,这里是bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
#PATH变量指定了系统执行命令的路径
MAILTO=root
#MAILTO变量指定了crond的任务执行信息将经过电子邮件发送给root用户
# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)    //分钟
# |  .------------- hour (0 - 23)    //小时
# |  |  .---------- day of month (1 - 31)    //日期
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...    //月份,能够写数字,也能够写英文的简写
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat    //星期,0或7都表示周日,也能够写成英文的简写
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed    //用户,不写用户就是root 最后一列,是你要执行的命令
星号(*):表明全部可能的值,例如month字段若是是星号,则表示在知足其它字段的制约条件后每个月都执行该命令操做。
逗号(,):能够用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):能够用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):能够用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线能够和星号一块儿使用,例如*/10,若是用在minute字段,表示每十分钟执行一次。

#为何没有年份?
#用星期肯定你的惟一性,好比说今年的6月18号和明年的6月18号的星期确定是不一样的,这样就能够肯定某一天的惟一性
----------
4.注意事项
1. 注意环境变量问题
# 脚本中涉及文件路径时写全局路径;
# 脚本执行要用到java或其余环境变量时,经过source命令引入环境变量:source /etc/profile
2.命令的执行最好用脚本
3.脚本权限加/bin/sh,规范路径/server/scripts
4.时间变量用反斜线转义,最好用脚本
5.定时任务添加注释
6.>/dev/null 2>&1   ==>&>/dev/null,别随意打印日志文件
7.定时任务里面的程序脚本尽可能用全路径
8.避免没必要要的程序以及命令输出
9.定时任务以前添加注释
10.打包到文件目录的上一级java

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息