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

1.9 KiB
Raw Blame History

简介

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