#### 简介

管理crontab文件。每个用户都可以创建自己的crontab文件，在`/var/spool/cron/crontabs`下有crontab文件的备份，但不应直接编辑`/var/spool/cron/crontabs`下的文件。

如果存在`/etc/cron.allow`，则所有需要运行crontab的用户必须加入`/etc/cron.allow`。如果存在`/etc/cron.deny`，则所有需要运行crontab的用户都不得加入`/etc/cron.deny`。

#### 用法

```
crontab [-u user] file
crontab [-u user] [选项]
```

#### 选项

```
-u user		# 指定用户。如不使用此选项，则默认为当前用户。
-l			# 将crontab文件的内容显示到标准输出上。
-r			# 删除当前crontab。
-e			# 编辑当前crontab文件，退出编辑器后crontab文件会自动生效。
-i			# 与-r连用，弹出提示要求用户确认是否删除。
```

#### crontab文件

```
# min	hour	day	mounth	week	command

# min代表分钟，取值范围0~59
# hour代表小时，取值范围0~23
# day代表上期，取值范围1~31
# month取值范围1~12
# week取值范围0~7，这里0和7都代表星期日
# command是要执行的命令
# 星号(*)代表所有可能的值
# 逗号(,)用来隔开值，或隔开取值范围。如"1,2,5"或"1-3,7-9"。
# 横杠(-)表示两个值之间的取值范围。如"8-10"代表"8,9,10"。
# 斜杠(/)指定时间的频率。如"0-23/2"代表"0,2,4,6,8,10,12,14,16,18,20,22"，也相当于"*/2"。

# 举例：每周一早上5点备份home目录
0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
```

#### 问题解决

1. 脚本可以手动执行而crontab没有执行。

   依次排除了脚本的环境变量的问题，crontab格式的问题，cron守护进程的问题。发现最终的原因是脚本里第一行#后面少了!，此时脚本可手动执行，但在crontab不能执行。猜测原因是我的环境里有bash，而crontab的环境里没有bash，所以第一行的错误导致后面的命令均不能执行。