• 首页 > 
  • Linux系统crontab定时任务的配置概要与常见问题

Linux系统crontab定时任务的配置概要与常见问题

KB: 41445

 · 

更新时间:2019-08-15 15:03

概述

Linux系统可以使用crontab实现定时任务和自动化操作,本文对此进行简要说明。

 

详细信息

列出定时任务

执行如下命令,列出所有的定时任务,如果没有定时任务,返回no crontab for root信息。

crontab -l

 

新建定时任务

  1. 执行如下命令,打开crontab定时任务编辑界面,按I键进入编辑模式。
    crontab -e
  2. 然后添加定时任务,定时任务如下所示。
    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定时任务编辑界面,按I键进入编辑模式,注释需要删除的定时任务即可。
    crontab -e

 

常见问题

执行任务时报“You (*) are not allowed to use this program (crontab)”错误

问题现象

使用非root用户在执行crontab -lcrontab -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用户,按以下步骤检查。

  1. 如果系统中没有cron.allow文件,检查/etc/cron.deny文件中是否有非root用户的用户名。
  2. 如果有,编辑cron.deny文件删除该用户的用户名,保存后执行如下命令,重启cron服务
    service crond restart
  3. 如果系统中有cron.allow文件,可以将该非root用户添加到cron.allow文件中,保存后重启cron服务。
  4. 检查完以上两步,切换到该非root用户,检查一下是否可以执行或编辑cron定时任务。

 

创建定时任务失败提示“command not found”

问题描述

使用Linux系统crontab服务创建定时任务时执行失败。进入crontab主目录,发现没有该目录。

 

问题原因

该问题是由于crontab应用包未安装,或安装后程序文件损坏导致。

 

处理办法
  1. 参考如下命令,通过yum方式进行在线安装。
    yum install vixie-cron
    yum install crontabs
    注:
    • vixie-cron为依赖程序。
    • crontabs为任务程序。
  2. 安装完毕后,再次执行crontab -e命令,确认正常编辑新的计划任务,或执行crontab -l命令查看已存在的历史任务。

 

适用于

  • 云服务器 ECS