定时任务Crontab
Posted hsmwlyl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定时任务Crontab相关的知识,希望对你有一定的参考价值。
一、相关配置
- /var/spool/cron/ 用于存放每个用户包括root的crontab任务,每个任务以创建者的名字命名
- /etc/crontab 此文件负责调度各种管理和维护任务。
- /etc/cron.d/ 用于存放任何要执行的crontab文件或脚本。
- /etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly 用于存放脚本,可让它每小时/天/星期、月执行一次。
二、常用命令:
crontab [-u username] // 省略用户表表示操作当前用户的crontab
-e (编辑工作表)
-l (列出工作表里的命令)
-r (删除工作)
crontab -e 进入当前用户的工作表编辑,crontab的命令构成为‘时间+动作’,其时间有分、时、日、月、周五种,操作符有:
- * 取值范围内的所有数字
- / 每过多少个数字
- - 从X到Z
- ,散列数字
三、crontab时间说明
# .---------------- 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 # | | | | | # | | | | | # * * * * * command to be executed minute:代表一小时内的第几分,范围 0-59。 hour:代表一天中的第几小时,范围 0-23。 mday:代表一个月中的第几天,范围 1-31。 month:代表一年中第几个月,范围 1-12。 wday:代表星期几,范围 0-7 (0及7都是星期天)。 who:要使用什么身份执行该指令,当您使用 crontab -e 时,不必加此字段。 command:所要执行的指令。
四、crontab服务状态
sudo service crond start # 启动服务 sudo service crond stop # 关闭服务 sudo service crond restart # 重启服务 sudo service crond reload # 重新载入配置 sudo service crond status # 查看服务状态
五、crontab命令
crontab $filepath # 重新指定crontab定时任务列表文件 crontab -l # 查看crontab定时任务 crontab -e # 编辑定时任务【删除-添加-修改】 # 添加定时任务 Step-One : 编辑任务脚本【分目录存放】【ex: backup.sh】 Step-Two : 编辑定时文件【命名规则:backup.cron】 Step-Three : crontab命令添加到系统crontab backup.cron Step-Four : 查看crontab列表 crontab -l
六、实例
# 实例1:每1分钟执行一次myCommand * * * * * myCommand # 实例2:每小时的第3和第15分钟执行 3,15 * * * * myCommand # 实例3:在上午8点到11点的第3和第15分钟执行 3,15 8-11 * * * myCommand # 实例4:每隔两天的上午8点到11点的第3和第15分钟执行 3,15 8-11 */2 * * myCommand # 实例5:每周一上午8点到11点的第3和第15分钟执行 3,15 8-11 * * 1 myCommand # 实例6:每晚的21:30重启smb 30 21 * * * /etc/init.d/smb restart # 实例7:每月1、10、22日的4 : 45重启smb 45 4 1,10,22 * * /etc/init.d/smb restart # 实例8:每周六、周日的1 : 10重启smb 10 1 * * 6,0 /etc/init.d/smb restart # 实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb 0,30 18-23 * * * /etc/init.d/smb restart # 实例10:每星期六的晚上11 : 00 pm重启smb 0 23 * * 6 /etc/init.d/smb restart # 实例11:每一小时重启smb * */1 * * * /etc/init.d/smb restart # 实例12:晚上11点到早上7点之间,每隔一小时重启smb * 23-7/1 * * * /etc/init.d/smb restart # 每天早上6点 0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。 # 每两个小时 0 */2 * * * echo "Have a break now." >> /tmp/test.txt # 晚上11点到早上8点之间每两个小时和早上八点 0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt # 每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 0 11 4 * 1-3 command line # 1月1日早上4点 0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 HOME=/ # 每小时(第一分钟)执行/etc/cron.hourly内的脚本 01 * * * * root run-parts /etc/cron.hourly # 每天(凌晨4:02)执行/etc/cron.daily内的脚本 02 4 * * * root run-parts /etc/cron.daily # 每星期(周日凌晨4:22)执行/etc/cron.weekly内的脚本 22 4 * * 0 root run-parts /etc/cron.weekly # 每月(1号凌晨4:42)去执行/etc/cron.monthly内的脚本 42 4 1 * * root run-parts /etc/cron.monthly # 注意: "run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。 # 每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。 5,15,25,35,45,55 16,17,18 * * * command # 每周一,三,五的下午3:00系统进入维护状态,重新启动系统。 00 15 * *1,3,5 shutdown -r +5 # 每小时的10分,40分执行用户目录下的innd/bbslin这个指令: 10,40 * * * * innd/bbslink # 每小时的1分执行用户目录下的bin/account这个指令: 1 * * * * bin/account # 每天早晨三点二十分执行用户目录下如下所示的两个指令(每个指令以;分隔): 203 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)
七、Django中的定时任务
# 添加定时任务到系统中 python manage.py crontab add # 显示已经激活的定时任务 python manage.py crontab show # 移除定时任务 python manage.py crontab remove
以上是关于定时任务Crontab的主要内容,如果未能解决你的问题,请参考以下文章