本文介绍如何在Linux系统的ECS实例中配置crontab定时任务,以及配置定时任务中的常见问题和解决方案。
crontab定时任务
新建定时任务
远程连接ECS实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
执行如下命令,打开crontab定时任务编辑界面。
crontab -e
按
i
键进入编辑模式。添加定时任务,定时任务如下所示。
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。
按
Esc
键,输入:wq
保存退出。
查看定时任务
执行crontab -l
命令,查看已经配置的定时任务。
如果返回no crontab for username
信息,表示没有配置定时任务,
username为您当前登录的用户。
删除定时任务
删除所有定时任务。
执行如下命令,删除所有的定时任务。
crontab -r
删除具体的定时任务。
执行如下命令,打开crontab定时任务编辑界面。
crontab -e
按
i
键进入编辑模式。根据需要,在定时任务前加#号即可注释该定时任务。
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。
按
Esc
键,输入:wq
保存退出。
常见问题
非root用户,执行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的权限。
cron.allow
或cron.deny
文件用于控制用户对crontab命令的访问。
cron.allow
文件中的用户可以使用crontab命令。cron.deny
文件中的用户不能使用crontab命令。
解决方案
使用root用户远程连接ECS实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
分别执行如下命令,查看是否存在
cron.allow
或cron.deny
文件。find /etc/cron.allow find /etc/cron.deny
cron.allow
或cron.deny
文件是否存在与是否可以使用crontab命令的用户关系说明如下。cron.allow文件是否存在
cron.deny文件是否存在
有权限使用crontab的用户范围
不存在
不存在
仅root用户可使用crontab命令。
存在
不存在
仅cron.allow文件中的用户可使用crontab命令。
不存在
存在
不在cron.deny文件中的用户都可以使用crontab命令。
说明若cron.deny文件内容为空,则所有用户都可以使用crontab令。
存在
存在
仅cron.allow文件中的用户可以使用crontab命令。
说明cron.allow优先级高于cron.deny,此时cron.deny不起作用。
根据需要,编辑
cron.allow
或cron.deny
文件。如果不存在
cron.allow
文件,若cron.deny
文件中存在非root用户的用户名,请删除该用户的用户名后,保存cron.deny
。如果存在
cron.allow
文件,将该非root用户添加到cron.allow
文件中,保存cron.allow
。
执行如下命令,重启cron服务 。
systemctl restart crond.service
切换到该非root用户,重新执行
crontab
命令,确保可以正常执行。
使用crontab -e创建定时任务失败,提示“command not found”错误。
问题现象
使用Linux系统的ECS实例中,执行crontab -e
创建定时任务时执行失败,提示“command not found”错误。
执行cd /etc/crontab进入主目录,提示“No such file or directory”错误。
问题原因
该问题是因为crontab应用包未安装,或安装后程序文件损坏导致。
解决方案
远程连接ECS实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
执行如下命令,安装crontabs依赖包和crontabs包。
yum install vixie-cron yum install crontabs
再次执行
crontab -e
命令,确认可以正常编辑新的计划任务。