crontab
Linux crontab是用来定期执行程序的命令。
当安装完成操作系统之后,默认便会启动此任务调度命令。
- cron 在 3 个地方查找配置文件:
/var/spool/cron/
这个目录下存放的是每个用户包括 root 的 crontab 任务,每个任务以创建者的名字命名,比如 tom 建的 crontab 任务对应的文件就是 /var/spool/cron/tom。 一般一个用户最多只有一个 crontab 文件。 - /etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的 crontab。
/etc/cron.d/
这个目录用来存放任何要执行的crontab文件或脚本。
语法
crontab [ -u user ] { -l | -r | -e }
参数说明:
- -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI
- -r : 删除目前的时程表
- -l : 列出目前的时程表
启停:
/sbin/service crond {start|stop|restart|reload|status}
或则
service crond {start|stop|restart|reload|status}
查看邮件童通知:cat /var/spool/mail/root,如果想去掉通知,执行脚本命令增加 > /dev/null 2>&1
执行脚本
- 创建执行脚本
touch hello.sh
- 编辑脚本
vi hello.sh
- 让环境生效,运行指定路径的 jar 包, Xms:表示jvm所需最小内存,Xmx:表示jvm所需最大内存。
source /etc/profile
cd /usr/java
/usr/java/jdk1.8.0/bin/java -jar -Xms512m -Xmx1024m /usr/java/hi.jar
- 创建/查看定时任务
crontab -e
,指定每年每月每天的凌晨三点整执行脚本
00 03 * * * sh /usr/java/hello.sh
- shell 脚本权限
chmod 755 /usr/java/hello.sh
常用 cron 表达式例子
0 0 2 1 * ? * 表示在每月的1日的凌晨2点调整任务
0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业
0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行作
0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 12 ? * WED 表示每个星期三中午12点
0 0 12 * * ? 每天中午12点触发
0 15 10 ? * * 每天上午10:15触发
0 15 10 * * ? 每天上午10:15触发
0 15 10 * * ? * 每天上午10:15触发
0 15 10 * * ? 2005 2005年的每天上午10:15触发
0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发
0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发
0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发
0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发
0 15 10 ? * MON-FRI 周一至周五的上午10:15触发
0 15 10 15 * ? 每月15日上午10:15触发
0 15 10 L * ? 每月最后一日的上午10:15触发
0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发
0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发
0 1 */7 * * 每两天执行一次
重启执行脚本 @reboot sh xxx.sh