48 lines
1.9 KiB
Markdown
48 lines
1.9 KiB
Markdown
#### 简介
|
||
|
||
管理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,所以第一行的错误导致后面的命令均不能执行。 |