|
[md]## 前言
最近有个自己的特殊需求,需要定期备份某些数据到 GitHub,于是打算使用 Linux 系统本身的定时器完成此需求。
## `crontab` 简介
`crontab` 命令常见于 [Unix](https://baike.baidu.com/item/Unix) 和[类 Unix](https://baike.baidu.com/item/%E7%B1%BBUnix) 的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。crontab 储存的指令被[守护进程](https://baike.baidu.com/item/%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B)激活, `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` 用户下进行查看
[/md] |
|