computer_knowledge_notes/Software/_系统工具/crontab.md

48 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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