阡陌 发表于 2023-12-27 23:38:52

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]
查看完整版本: Linux 计划任务