任务计划 crontab 配置概要与常见问题
crontab
是Linux VPS里定时计划任务,可以说是一个使用频率很高的小工具了,笔者最近几乎每天都会用到,因为不熟练很多还得边查资料边用,所以就顺手的收集了一些相关的资料分享出来,就当是一次笔记了。
列出定时任务
crontab -l
列出所有的定时任务,如果没有定时任务,返回no crontab for root信息。
新建定时任务
crontab -e
#打开crontab定时任务编辑界面,按I键进入编辑模式。
格式:分时日月周 <命令>
- 第1列表示分钟1~59 每分钟用或者 /1表示
- 第2列表示小时1~23(0表示0点)
- 第3列表示日期1~31
- 第4列表示月份1~12
- 第5列标识号星期0~6(0表示星期天)
- 第6列要运行的命令
示例:5 * * * * /etc/cpu_monitor.sh
#开机后,每5分钟执行一次cpu监控脚本。30 21 * * * /usr/local/etc/rc.d/lighttpd restart
# 每晚的21:30重启 apache。 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
#每月1、10、22日的4:45重启 apache。
查看定时任务
可以执行 crontab -l 查看已经配置的定时任务。
删除定时任务
crontab -r
#删除所有定时任务。
单独删除某一个定时任务,进入编辑模式,注释掉需要删除的定时任务语句即可
crontab -e
注:使用Crontab进行清理、删除、更改配置操作,有一定风险,请在测试前创建快照备份。
常见问题
执行任务时报错: You (*) are not allowed to use this program (crontab)
问题现象
非 root 用户在执行 crontab -l 或 crontab -e 等命令时,出现报错:
You (***) are not allowed to use this program (crontab)
问题原因
这是由于 crontab
任务有权限控制,非 root
用户默认没有操作 crontab
的权限。可以通过创建文件 /etc/cron.allow
或者 /etc/cron.deny
来控制权限。
如果 /etc/cron.allow
文件存在,那么只有这个文件中列出的用户可以使用 cron
, 同时 /etc/cron.deny
文件被忽略;
如果 /etc/cron.allow
文件不存在,那么文件 /cron.deny
中列出的用户 将不能用使用 cron
。
处理办法
遇到类似问题,请切换到 root 用户,按以下步骤检查:
- 如果系统中没有
cron.allow
文件,检查/etc/cron.deny
文件中是否有该非 root
用户的用户名。如果有,编辑cron.deny
文件删除该用户的用户名,保存后通过service crond restart
重启cron服务 - 如果系统中有
cron.allow
文件,可以将该非root
用户(以testuser1用户名为例)添加到cron.allow
文件中。保存后重启cron服务。
检查完以上两步,切换到该非root
用户(testuser1),检查一下是否可以执行或编辑cron
定制任务。
创建定时任务失败,提示 command not found
问题描述
使用 Linux 定时服务 crontab
创建定时任务时执行失败。进入crontab
主目录,发现没有该目录。
分析解决
该问题是由于Crontab应用包未安装,或安装后程序文件损坏导致。
此时可通过yum方式进行在线安装,参考命令如下:yum install vixie-cron
#依赖程序,主程序yum install crontabs
#任务程序,执行包
安装完毕后,再次执行crontab -e
命令编辑新的计划任务,或crontab -l
查看已存在的历史任务。