diff --git "a/\346\235\250\346\236\227\350\214\202/20240617-cron.md" "b/\346\235\250\346\236\227\350\214\202/20240617-cron.md" new file mode 100644 index 0000000000000000000000000000000000000000..b7e2ae1ba74667247c43c9562c4c13d352fc34c2 --- /dev/null +++ "b/\346\235\250\346\236\227\350\214\202/20240617-cron.md" @@ -0,0 +1,126 @@ +## 6-17讲课内容 + +**周期任务管理** + +``` +1.cron是一种基于时间的任务调度程序,用于在特定时间或时间间隔自动执行任务; +2.cron配置文件 + -用户级cron任务,每个用户都有自己的cron任务配置文件 + -位于'/etc/spool/cron//crontabs/用户名'; + -系统级cron任务配置文件 + -位于'/etc/crontab'和'/etc/cron.d'子文件/目录下; + 3.周期性任务管理 + -'/etc/cron.hourly/' + - `/etc/cron.daily/` + - `/etc/cron.weekly/` + - `/etc/cron.monthly/` + +``` + +``` +1.编辑cron任务 + -crontab -e #edit + -crontab -l #list + -crontab -r #remove +2.cron任务语法 + -* * * * * command_to_execute # command_to_execute 可以是命令也可以是包含命令的文件 + +- - - - - +| | | | | +| | | | +----- 星期几 (0 - 7) (星期天 = 0 或 7) +| | | +------- 月份 (1 - 12) +| | +--------- 日期 (1 - 31) +| +----------- 小时 (0 - 23) ++------------- 分钟 (0 - 59) + +``` + +``` +3.特殊符号 + -星号(`*`):匹配任何值,,即每一。 + -实例:在分钟字段中使用 `*` 表示每一分钟都运行一次任务。 + + -逗号(`,`):指定一个列表值,列出所有指定值 a,b,c。 + -实例:小时字段中使用 `0,6,12,18` 表示任务将在每天的0点、6点、12点和18点运行。=> + 0 0,6,12,18 * * * /path/to/command + + -短横线(`-`),指定一个范围值,开始-结尾。 + - 实例:0 0 1-5 * * /path/to/command表示任务将在每个月的1号到5号之间运行。 + + -斜杠(`/`):指定步长值,即间隔。 + -实例:*/15 * * * * /path/to/command在分钟字段中使用 `*/15` 表示任务每15分钟运行一次。 + + -L(Last):表示最后一个。可以在月的天数或星期几中使用。 + -实例:0 0 L * * /path/to/command在日期字段中使用 `L` 表示每个月的最后一天。 + +``` + +**周期任务练习** + +``` +执行在家目录touch a.txt + +1. 每天3:00执行一次 +答:00 3 * * * echo 111 >> /home/ping/a.txt + +2. 每周六2:00执行 +答:00 2 * * 6 echo 222 >> /home/ping/a.txt + +3. 每周六1:05执行 +答:5 1 * * 6 echo 222 >> /home/ping/a.txt + +4. 每周六1:25执行 +答:25 1 * * 6 echo 222 >> /home/ping/a.txt + +5. 每天8:40执行 +答:40 8 * * * echo 222 >> /home/ping/a.txt + +6. 每天3:50执行 +答:50 3 * * * echo 222 >> /home/ping/a.txt + +7. 每周一到周五的3:40执行 +答:40 3 * * 1-5 echo 222 >> /home/ping/a.txt + +8. 每周一到周五的3:41开始,每10分钟执行一次 +答:41/10 3 * * 1-5 echo 222 >> /home/ping/a.txt + +9. 每天的10:31开始,每2小时执行一次 +答:31 10/2 * * * echo 222 >> /home/ping/a.txt + +10. 每周一到周三的9:30执行一次 +答:30 9 * * 1-3 echo 222 >> /home/ping/a.txt + +11. 每周一到周五的8:00,每周一到周五的9:00执行一次 +答:00 8 * * 1-5 echo 222 >> /home/ping/a.txt + 00 9 * * 1-5 echo 222 >> /home/ping/a.txt + +12. 每天的23:45分执行一次 +答:45 23 * * * echo 222 >> /home/ping/a.txt + +13. 每周三的23:45分执行一次 +答:45 23 * * 3 echo 222 >> /home/ping/a.txt + +14. 每周一到周五的9:25到11:35、13:00到15:00之间,每隔10分钟执行一次 +答:25-59/10 9 * * 1-5 echo 222 >> /home/ping/a.txt + */10 10 * * 1-5 echo 222 >> /home/ping/a.txt + 00-35/10 11 * * 1-5 echo 222 >> /home/ping/a.txt + 0-59/10 13-15 * * 1-5 echo 222 >> /home/ping/a.txt + +15. 每周一到周五的8:30、8:50、9:30、10:00、10:30、11:00、11:30、13:30、14:00、14:30、5:00分别执行一次 +答:30,50 8 * * 1-5 echo 222 >> /home/ping/a.txt + 30 9 * * 1-5 echo 222 >> /home/ping/a.txt + 00,30 10-14 * * 1-5 echo 222 >> /home/ping/a.txt + 00 5 * * 1-5 echo 222 >> /home/ping/a.txt + +16. 每天16:00、10:00执行一次 +答:00 10,16 * * * echo 222 >> /home/ping/a.txt + +17. 每天8:10、16:00、21:00分别执行一次 +答:10 8 * * * echo 222 >> /home/ping/a.txt + 00 16,21 * * * echo 222 >> /home/ping/a.txt + +18. 每天7:47、8:00分别执行一次 +答:7 47 * * * echo 222 >> /home/ping/a.txt + 00 8 * * * echo 222 >> /home/ping/a.txt +``` +