# 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`

6. 重启代理`service postfix start`
##### cron不执行原因排查
一. 查看日志
1. `cd /var/log`
2. `tail -f cron`
二. 查看所属用户日志
1. `cd /var/spool/mail`
2. `vim root` (当定时任务执行失败,会在所属用户里面发邮件,里面有执行失败的原因)