企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
> crontab 用于提交和管理执行周期性的任务。 * 若需要每天凌晨 1 点执行一次任务; * 若每隔1分钟检查某服务运行情况; * 若每天定点采集数据; * * * #### crontab 安装: 一般centos7自带crontab ###### 1\. 检测是否安装 ~~~undefined rpm -qa | grep crontab ~~~ 结果返回如下,说明已安装 ~~~css crontabs-1.11-6.20121102git.el7.noarch ~~~ 结果为空,执行下面命令进行安装 ~~~undefined yum install crontabs ~~~ 查看crontab服务是否已设置为开机启动 ~~~undefined ntsysv ~~~ 加入开机自动启动 ~~~csharp chkconfig crond on ~~~ #### 2.查看 crontab 运行状态 ~~~undefined systemctl status crond ~~~ 如果显示结果为 Active: active (running) 表示运行中 如果显示结果为 Active: inactive (dead) 表示未运行。 crontab 未运行则通过下面命令设置: crontab 开机自启: ~~~bash systemctl enable crond ~~~ 启动 crontab: ~~~undefined systemctl start crond ~~~ 查看当前用户的定时任务: ~~~undefined crontab -l ~~~ #### 3.设置定时任务 任务:每十分钟将打印的内容输入到test.txt文件 编辑脚本任务 ~~~bash cd /root vim /root/test.sh ~~~ 粘贴下面内容 ~~~bash #! /bin/bash echo hello world! >> test.txt ~~~ Esc 键,再输入 :wq 保存文件 执行下面命令即可编辑当前用户的定时任务: ~~~undefined crontab -e ~~~ 弹出编辑界面,按下 i 进入编辑状态,粘贴下面内容 ~~~jsx */10 * * * * bash /root/test.sh ~~~ 查看定时任务 ~~~undefined crontab -l ~~~ > \*/10 \* \* \* \* bash /root/test.sh ##### 4.crontab 不执行的原因 * 检查 crontab 服务是否正常 * 检查脚本路径是否绝对路径 * 检查脚本路径前是否添加了 bash 或 /etc/profile;/bin/sh ##### 如果以上都没问题,那就要通过日志查找问题所在了。 ##### 5.参数说明 \*/10 \* \* \* \* bash /root/test.sh ~~~undefined */10 Minute:每个小时的第几分钟执行该任务;取值范围0-59 * Hour:每天的第几个小时执行该任务;取值范围0-23 * Day:每月的第几天执行该任务;取值范围1-31 * Month:每年的第几个月执行该任务;取值范围1-12 * DayOfWeek:每周的第几天执行该任务;取值范围0-6,0表示周末 bash /root/test.sh CommandPath:指定要执行的程序路径 ~~~ 命令查看 ~~~bash # man crontab ~~~ 整理成表格如下: ![](https://img.kancloud.cn/39/a7/39a739fee3219092cfb1bd9aeba1fe7a_606x285.jpg) ![](https://img.kancloud.cn/0b/20/0b209623e24c052b10709599ac82c840_720x360.jpg) #### 6.举个栗子 调度示例 ~~~jsx * 1 * * * /opt/script/backup.sh :从1:0到1:59 每隔1分钟 执行 15 05 * * * /opt/script/backup.sh :05:15 执行 */10 * * * * /opt/script/backup.sh :每隔10分 执行 0 17 * * 1 /opt/script/backup.sh :每周一的 17:00 执行 2 8-20/3 * * * /opt/script/backup.sh 8:02,11:02,14:02,17:02,20:02 执行 ~~~ crontab文件的实例 ~~~csharp 30 21 * * * /etc/init.d/nginx restart # 每晚的21:30重启 nginx。 45 4 1,10,22 * * /etc/init.d/nginx restart # 每月1、 10、22日的4 : 45重启nginx。 10 1 * * 6,0 /etc/init.d/nginx restart # 每周六、周日的1 : 10重启nginx。 0,30 18-23 * * * /etc/init.d/nginx restart # 每天18 : 00至23 : 00之间每隔30分钟重启nginx。 0 23 * * 6 /etc/init.d/nginx restart # 每星期六的11 : 00 pm重启nginx。 * */1 * * * /etc/init.d/nginx restart # 每一小时重启nginx * 23-7/1 * * * /etc/init.d/nginx restart # 晚上11点到早上7点之间,每 隔一小时重启nginx 0 11 4 * mon-wed /etc/init.d/nginx restart # 每月的4号与每周一到周三 的11点重启nginx 0 4 1 jan * /etc/init.d/nginx restart # 一月一号的4点重启nginx */30 * * * * /usr/sbin/ntpdate 210.72.145.20 //每半小时同步一下时间 ~~~ 作者:是东东 链接:https://www.jianshu.com/p/e8e0bc4d5989 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。