Linux 计划任务
在 Linux 系统中,定时任务是自动化和定期执行任务的重要手段。其中,crontab 和 crond 是两个核心概念。
## crond
crond 是 cron daemon 的缩写,是 Linux 下的一个守护进程,它负责周期性地检查并执行 crontab 中定义的定时任务。换句话说,crontab 定义了任务,而 crond 则负责执行这些任务。
## crontab
crontab 是 cron table 的缩写,是一个用于设置、维护或检查用户的定时任务的命令。通过编辑 crontab 文件,用户可以指定在特定时间或间隔内要执行的命令或脚本。
### 基本格式
```
crontab [选项] 文件名
```
- `-e`:编辑用户的 crontab 文件;
- `-l`:列出用户当前的 crontab 内容;
- `-r`:删除用户的 crontab 文件;
- `-i`:在删除用户 crontab 文件之前进行确认。
当使用 `crontab -e` 命令时,系统会打开一个编辑器(通常是 vi 或 nano),供用户编辑或添加新的定时任务。
### crontab 格式
每一行代表一个定时任务,格式如下:
```
* * * * * command
```
分别表示分钟(0-59)、小时(0-23)、日期(1-31)、月份(1-12)、星期(0-7,0 和 7 都代表星期日)和要执行的命令。
![](https://file.mculoop.com/images/2023/12/27/202312272322095.png)
关于通配符:
- `*`:代表所有可能的值;
- `,`:用于指定多个值;
- `-`:用于表示一个范围值;
- `/`:用于表示重复的频率。
每次编辑完某个用户的 cron 设置后,cron 自动在 /var/spool/cron 下生成一个与此用户同名的文件,此用户的 cron 信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用 crontab -e 来编辑。cron 启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动 cron 服务。
### 示例
每 1 分钟执行一次 myCommand
```
* * * * * myCommand
```
每小时的第 3 和第 15 分钟执行
```
3,15 * * * * myCommand
```
在上午 8 点到 11 点的第 3 和第 15 分钟执行
```
3,15 8-11 * * * myCommand
```
每隔两天的上午 8 点到 11 点的第 3 和第 15 分钟执行
```
3,15 8-11 */2** myCommand
```
每周一上午 8 点到 11 点的第 3 和第 15 分钟执行
```
3,15 8-11 * * 1 myCommand
```
每晚的 21:30 重启 smb
```
30 21 * * * /etc/init.d/smb restart
```
每月 1、10、22 日的 4 : 45 重启 smb
```
45 4 1,10,22 * * /etc/init.d/smb restart
```
每周六、周日的 1 : 10 重启 smb
```
10 1 * * 6,0 /etc/init.d/smb restart
```
每天 18 : 00 至 23 : 00 之间每隔 30 分钟重启 smb
```
0,30 18-23 * * * /etc/init.d/smb restart
```
每星期六的晚上 11 : 00 pm 重启 smb
```
0 23 * * 6 /etc/init.d/smb restart
```
每一小时重启 smb
```
0 */1 * * * /etc/init.d/smb restart
```
晚上 11 点到早上 7 点之间,每隔一小时重启 smb
```
0 23-7/1 * * * /etc/init.d/smb restart
```
页:
[1]