## 前言
最近有个自己的特殊需求,需要定期备份某些数据到github,于是打算使用linux系统本身的定时器完成此需求。
## `crontab`简介
`crontab`命令常见于[Unix](https://baike.baidu.com/item/Unix)和[类Unix](https://baike.baidu.com/item/类Unix)的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。crontab储存的指令被[守护进程](https://baike.baidu.com/item/守护进程)激活, `crond`常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为`cron jobs`。
## 确定服务器是否开启定时任务计划服务
命令: `service crond status` 确认定时任务是否开启。

常用命令:
```bash
# 开启服务
service crond start
# # 开启服务
service crond stop
# 重启服务
service crond restart
# 重新载入配置
service crond reload
```
## `crontab`格式说明
格式为 :`* * * * *`
| 解释 | minute | hour | day of mouth | month of year | day of week |
| :----: | :----: | :----: | :----: | :----: | :----:|
| 标识 | * | * | * | * | * |
| 含义 | 每个小时的第几分钟执行该任务 | 每天的第几个小时执行该任务 | 每月的第几天执行该任务 | 每年的第几个月执行该任务 | 每周的第几天执行该任务 |
| 取值范围 | 0~59 | 0~23 | 1~31 | 1~12 | 0~6(0表示周天) |
示例:
`5 * * * * Command`每小时的第5分钟执行一次命令
`*/1 * * * * Command`每1分钟执行一次命令
`0 */1 * * * Command`每1小时执行一次命令
`30 18 * * * Command`指定每天下午的 6:30 执行一次命令
`30 7 8 * * Command`指定每月8号的7:30分执行一次命令
`30 5 8 6 * Command` 指定每年的6月8日5:30执行一次命令
`30 6 * * 0 Command`指定每星期日的6:30执行一次命令
每天的下午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`
## 开始创建一个定时任务
`crontab -e` 编辑某个用户的`cron`服务
`crontab -l` 列出某个用户`cron`服务的详细内容

`crontab -r` 删除某个用户的`cron`服务(慎用)
## 查看定时任务的执行情况
在`/var/spool/mail/{username}`中可以查看最近的`crontab`的执行情况
> username:用户名
## `cron`的定时任务备份恢复
如果使用`crontab -r` 误删了定时任务在`/var/spool/cron`下有定时任务的备份,可以通过该`cron`找回
如果没有权限 的话`su - + root.password`在`root`用户下进行查看
## 后记
参考文章:[点我](https://blog.csdn.net/yeguxin/article/details/79543514)

linux中使用crontab设置定时任务