# Linux部署定时任务 **Repository Path**: fpfgitmy_admin/linux-deployment-timing-task ## Basic Information - **Project Name**: Linux部署定时任务 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-04-28 - **Last Updated**: 2021-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### Linux部署定时任务 ##### 简单介绍 + Linux下crontab命令可以指定定时任务,最小粒度未1min + 定时器格式规则和含义 | 分钟 | 小时 | 天数 | 月数 | 周数 | | --- | --- | --- | --- | --- | | minute | hour | day | month | week | + 每个字段代表的含义如下: 1. Minute 每个小时的第几分钟执行该任务 2. Hour 每天的第几个小时执行该任务 3. 每月的第几天执行该任务 4. 每年的第几个月执行该任务 5. 每周的第几天执行该任务 ##### 关于crontab + crond 和crontab是不可分割的。crontab是一个命令,cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务。 1. 一般Linux都会有,如果没有自己手动安装 `yum install vixie-cron` 2. `yum install crontabs` 3. 查看crontab的状态:`/bin/systemctl crond status` 4. 设置开机自启:`ntsysv` | 命令 | 示意 | | --- | --- | | systemctl start crond | 启动定时任务服务 | | systemctl stop crond | 停止定时任务服务 | | systemctl restart crond | 重启定时任务服务 | | systemctl reload crond | 重载定时任务服务 | | systemctl status crond | 查看定时任务服务状态 | ##### 常用命令 | 命令 | 示意 | | --- | --- | | crontab -l | 列出所有定时任务 | | crontab -l -u jp | 列出用户jp的所有调度任务 | | crontab -e | 编辑定时任务 | | crontab -r | 删除所有定时任务 | ##### 简单示例 + `5 * * * * ls` **每小时的第5分钟执行 ls 命令** + `*/5 * * * * ls` **每5分钟执行 ls 命令** + `30 4 * * * ls` **每天的 4:30 执行 ls 命令** + `0 * * * * ls` **每小时执行 ls 命令** + `0 0 * * * ls` **每天执行 ls 命令** + `0 0 * * 0 ls` **每周执行 ls 命令** + `0 0 1 1 * ls` **每年执行 ls 命令** + `20 7 8 * * ls` **每月 8号 的 7:20 执行 ls 命令** + `30 5 28 6 * ls` **每年的 6月28号 5:30 执行 ls 命令** + `30 6 * * 0 ls` **每星期日的 6:30 执行 ls 命令** 注意:0 表示星期天, 1 表示星期一,以此类推;也可以用英文来表示,sun 表示星期天,mon 表示星期一等。 + `30 4 10,20 * * ls` **每月 10号和20号 的 4:30 执行 ls 命令** 注意:" , " 用来连接多个不连续的时间 + `25 8-11 * * * ls` **每天 8~11点 的第 25 分钟执行 ls 命令** 注意:" - " 用来连接连续的时间 + `30 5 */10 * * ls` **每个月中每隔 10天 的 5:30 执行 ls 命令** + `30 4 * * * root run-parts /etc/cron.daily` **每天 4:30 以 root 身份执行 /etc/cron.daily 目录中的所有可执行文件** + `0 * * * * cd /data/sync-data/mdd;/data/GoProjects/bin/go-elastic-index -config=mdd.toml >> mdd.log 2>&1` **真实使用中,一般都是执行自己的可执行文件** ##### 具体操作 1. 使用`crontab -e`进入编辑模式, 2. 编写对应的定时任务,比如`* * * * * ls` 3. 点击保存推出,重启`crond`服务 `/bin/systemctl restart crond` 4. 查看日志`cd /var/log` `tail -f cron` 5. 更改邮件接受范围`vim /etc/postfix/main.cf` ![输入图片说明](https://images.gitee.com/uploads/images/2021/0428/153654_009697cc_1942182.png "屏幕截图.png") 6. 重启代理`service postfix start` ##### cron不执行原因排查 一. 查看日志 1. `cd /var/log` 2. `tail -f cron` 二. 查看所属用户日志 1. `cd /var/spool/mail` 2. `vim root` (当定时任务执行失败,会在所属用户里面发邮件,里面有执行失败的原因)