补充了一点校对

This commit is contained in:
FSSlc 2016-06-26 23:35:56 +08:00
parent d0750c9805
commit dbc142932f

View File

@ -1,4 +1,4 @@
如何在 Linux 及 Unix 系统中添加 cron 任务
如何在 Linux 及 Unix 系统中添加定时任务
======================================
![](https://www.unixmen.com/wp-content/uploads/2016/05/HOW-TO-ADD-CRON-JOBS-IN-LINUX-AND-UNIX-696x334.png)
@ -7,11 +7,11 @@
![](http://www.unixmen.com/wp-content/uploads/2016/05/cronjob.gif)
定时任务 (Cron job) 被用于安排那些需要被周期性执行的命令。利用它,你可以配置某些命令或者脚本,让它们在某个设定的时间周期性地运行。`Cron` 是 Linux 或者类 Unix 系统中最为实用的工具之一。cron 服务(守护进程)在系统后台运行,并且会持续地检查 `/etc/crontab` 文件和 `/etc/cron.*/ `目录。它同样也会检 `/var/spool/cron/` 目录。
定时任务 (cron job) 被用于安排那些需要被周期性执行的命令。利用它,你可以配置某些命令或者脚本,让它们在某个设定的时间周期性地运行。`cron` 是 Linux 或者类 Unix 系统中最为实用的工具之一。cron 服务(守护进程)在系统后台运行,并且会持续地检查 `/etc/crontab` 文件和 `/etc/cron.*/ `目录。它同样也会检 `/var/spool/cron/` 目录。
### crontab 命令
`crontab` 是用来安装、卸载或者列出 cron 配置文件列表的命令。cron 配置文件则用于驱动 `Vixie Cron` 的 [cron(8)][1] 守护进程。每个用户都可以拥有自己的 crontab 文件,虽然这些文件都位于 `/var/spool/cron/crontabs` 目录中,但并不意味着你可以直接编辑它们。你需要通过 `crontab` 命令来编辑或者配置你自己的定时任务。
`crontab` 是用来安装、卸载或者列出定时任务列表的命令。cron 配置文件则用于驱动 `Vixie Cron` 的 [cron(8)][1] 守护进程。每个用户都可以拥有自己的 crontab 文件,虽然这些文件都位于 `/var/spool/cron/crontabs` 目录中,但并不意味着你可以直接编辑它们。你需要通过 `crontab` 命令来编辑或者配置你自己的定时任务。
### 定时配置文件的类型
@ -19,9 +19,9 @@
- **UNIX 或 Linux 系统的 crontab** : 此类型通常由那些需要 root 或类似权限的系统服务和重要任务使用。第六个字段(见下方的字段介绍)为用户名,用来指定此命令以哪个用户身份来执行。如此一来,系统的 `crontab` 就能够以任意用户的身份来执行操作。
- **用户的 crontabs**: 用户可以使用 `corntab` 命令来安装属于他们自己的定时任务。 第六个字段为需要运行的命令, 所有的命令都会以创建该 crontab 任务的用户的身份运行。
- **用户的 crontab**: 用户可以使用 `corntab` 命令来安装属于他们自己的定时任务。 第六个字段为需要运行的命令, 所有的命令都会以创建该 crontab 任务的用户的身份运行。
**注意**: 这种问答形式的 `Cron` 实现由 Paul Vixie 所写,并且被包含在许多 [Linux][2] 发行版和类 Unix 系统(如广受欢迎的第四版 BSD中。它的语法被各种 crond 的实现所[兼容][3]。
**注意**: 这种问答形式的 `Cron` 实现由 Paul Vixie 所写,并且被包含在许多 [Linux][2] 发行版和类 Unix 系统(如广受欢迎的第四版 BSD中。它的语法被各种 crond 的实现所[兼容][3]。
那么我该如何安装、创建或者编辑我自己的定时任务呢?
@ -57,7 +57,7 @@ $ crontab -e
便于记忆的格式:
```
* * * * * command to be executed
* * * * * 要执行的命令
| | | | |
| | | | —– 一周当中的某天 (0 7) (周日为 0 或 7)
@ -94,20 +94,59 @@ $ crontab -e
- **分隔符 (/)** : 此操作符指定了一个步进值,例如: `0-23/` 可以用于小时字段来指定某个命令每小时被执行一次。步进值也可以跟在星号操作符后边,如果你希望命令行每 2 小时执行一次,则可以使用 `*/2`
### 使用特殊字符节省时间
### 如何禁用邮件输出
默认情况下,某个命令或者脚本的输出内容(如果有的话)会发送到你的本地邮箱账户中。若想停止收到 `crontab` 发送的邮件,需要添加 `>/dev/null 2>&1` 这段内容,例如:
```
0 3 * * * /root/backup.sh >/dev/null 2>&1
```
如果想将输出内容发送到特定的邮件账户中,比如说 vivek@nixcraft.in 这个邮箱, 则你需要像下面这样定义一个 MAILTO 变量:
```
MAILTO="vivek@nixcraft.in"
0 3 * * * /root/backup.sh >/dev/null 2>&1
```
访问 “[禁用 Crontab 命令的邮件提示](http://www.cyberciti.biz/faq/disable-the-mail-alert-by-crontab-command/)” 查看更多信息。
### 任务:列出你所有的定时任务
键入以下命令:
```
# crontab -l
# crontab -u username -l
```
要删除所有的定时任务,可以使用如下命令:
```
# 删除当前定时任务 #
crontab -r
```
```
## 删除某用户名下的定时任务,此命令需以 root 用户身份执行 ##
crontab -r -u username
```
### 使用特殊字符来节省时间
你可以使用以下 8 个特殊字符中的其中一个替代头五个字段,这样不但可以节省你的时间,还可以提高可读性。
特殊字符 | 含义
特殊字符 |含义
|:-- |:--
@reboot | 在每次启动时运行一次
@yearly | 每年运行一次, “0 0 1 1 *”.
@yearly | 每年运行一次,等同于 “0 0 1 1 *”.
@annually | (同 @yearly)
@monthly | 每月运行一次, “0 0 1 * *”.
@weekly | 每周运行一次, “0 0 * * 0”.
@daily | 每天运行一次, “0 0 * * *”.
@monthly | 每月运行一次, 等同于 “0 0 1 * *”.
@weekly | 每周运行一次, 等同于 “0 0 * * 0”.
@daily | 每天运行一次, 等同于 “0 0 * * *”.
@midnight | (同 @daily)
@hourly | 每小时运行一次, “0 * * * *”.
@hourly | 每小时运行一次, 等同于 “0 * * * *”.
示例:
@ -121,7 +160,7 @@ $ crontab -e
** /etc/crontab ** 是系统的 corntabs 文件。通常只被 root 用户或守护进程用于配置系统级别的任务。每个独立的用户必须像上面介绍的那样使用 `corntab` 命令来安装和编辑自己的任务。`/var/spool/cron/` 或者 `/var/cron/tabs/` 目录存放了个人用户的 corntab 文件,它必定会备份在用户的家目录当中。
### 理解默认的 `/etc/crontab`
### 理解默认的 `/etc/crontab` 文件
典型的 `/etc/crontab` 文件内容是这样的:
@ -141,13 +180,13 @@ HOME=/
另外corn 会读取 `/etc/cron.d/`目录中的文件。通常情况下,像 sa-update 或者 sysstat 这样的系统守护进程会将他们的定时任务存放在此处。作为 root 用户或者超级用户,你可以使用以下目录来配置你的定时任务。你可以直接将脚本放到这里。`run-parts`命令会通过 `/etc/crontab` 文件来运行位于某个目录中的脚本或者程序。
目录 |描述
目录 |描述
|:-- |:--
/etc/cron.d/ | 将所有的脚本文件放在此处,并从 /etc/crontab 文件中调用它们。
/etc/cron.daily/ | 运行需要每天运行一次的脚本
/etc/cron.hourly/ | 运行需要每小时运行一次的脚本
/etc/cron.monthly/ | 运行需要每月运行一次的脚本
/etc/cron.weekly/ | 运行需要每周运行一次的脚本
/etc/cron.daily/ | 运行需要 每天 运行一次的脚本
/etc/cron.hourly/ | 运行需要 每小时 运行一次的脚本
/etc/cron.monthly/ | 运行需要 每月 运行一次的脚本
/etc/cron.weekly/ | 运行需要 每周 运行一次的脚本
### 备份定时任务
@ -170,4 +209,4 @@ via: https://www.unixmen.com/add-cron-jobs-linux-unix/?utm_source=feedburner&utm
[a]: https://www.unixmen.com/author/duynv/
[1]: http://www.manpager.com/linux/man8/cron.8.html
[2]: http://www.linuxsecrets.com/
[3]: http://www.linuxsecrets.com/linux-hardware/
[3]: http://www.linuxsecrets.com/linux-hardware/