crontab

Linux crontab是用来定期执行程序的命令。

当安装完成操作系统之后,默认便会启动此任务调度命令。

  1. cron 在 3 个地方查找配置文件: /var/spool/cron/ 这个目录下存放的是每个用户包括 root 的 crontab 任务,每个任务以创建者的名字命名,比如 tom 建的 crontab 任务对应的文件就是 /var/spool/cron/tom。 一般一个用户最多只有一个 crontab 文件。
  2. /etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的 crontab。
  3. /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

执行脚本

  1. 创建执行脚本
touch hello.sh 
  1. 编辑脚本
vi hello.sh 
  1. 让环境生效,运行指定路径的 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
  1. 创建/查看定时任务 crontab -e ,指定每年每月每天的凌晨三点整执行脚本
00 03 * * * sh /usr/java/hello.sh
  1. 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

上次更新时间: 2024/5/7 05:59:02