云服务器 ECS Linux 任务计划 crontab 配置概要与常见问题

  • A+
所属分类:Linux
高性能企业级服务器首台5折

云服务器 ECS Linux 可以利用 crontab 来实现定时任务,自动化操作。本文对此进行简要说明。

crontab 操作示例


列出定时任务

  1. 1
    <span class="pln">crontab </span><span class="pun">-</span><span class="pln">l         </span>
  2. 1
    <span class="com"><span class="hljs-comment">#列出所有的定时任务,如果没有定时任务,返回no crontab for root信息。</span></span>

blob.png

新建定时任务

  1. 1
    <span class="pln">crontab </span><span class="pun">-</span><span class="pln">e             </span>
  2. 1
    <span class="com"><span class="hljs-comment">#打开crontab定时任务编辑界面,按I键进入编辑模式。</span></span>

格式:分时日月周 <命令>

  • 第1列表示分钟1~59 每分钟用或者 /1表示
  • 第2列表示小时1~23(0表示0点)
  • 第3列表示日期1~31
  • 第4列表示月份1~12
  • 第5列标识号星期0~6(0表示星期天)
  • 第6列要运行的命令

示例:

  1. 1
    <span class="lit">5</span> <span class="pun">*</span> <span class="pun">*</span> <span class="pun">*</span> <span class="pun">*</span> <span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">cpu_monitor</span><span class="pun">.</span><span class="pln">sh     </span>
  2. 1
    <span class="com"><span class="hljs-comment">#开机后,每5分钟执行一次cpu监控脚本。</span></span>
  3. 1
     
  4. 1
    <span class="lit">30</span> <span class="lit">21</span> <span class="pun">*</span> <span class="pun">*</span> <span class="pun">*</span> <span class="pun">/</span><span class="pln">usr</span><span class="pun">/</span><span class="kwd"><span class="hljs-built_in">local</span></span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">rc</span><span class="pun">.</span><span class="pln">d</span><span class="pun">/</span><span class="pln">lighttpd restart         </span>
  5. 1
    <span class="com"><span class="hljs-comment"># 每晚的21:30重启 apache。 </span></span>
  6. 1
     
  7. 1
    <span class="lit">45</span> <span class="lit">4</span> <span class="lit">1</span><span class="pun">,</span><span class="lit">10</span><span class="pun">,</span><span class="lit">22</span> <span class="pun">*</span> <span class="pun">*</span> <span class="pun">/</span><span class="pln">usr</span><span class="pun">/</span><span class="kwd"><span class="hljs-built_in">local</span></span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">rc</span><span class="pun">.</span><span class="pln">d</span><span class="pun">/</span><span class="pln">lighttpd restart    </span>
  8. 1
    <span class="com"><span class="hljs-comment">#每月1、10、22日的4:45重启 apache。 </span></span>

查看定时任务

可以执行 crontab -l 查看已经配置的定时任务。

删除定时任务

  1. 1
    <span class="com"><span class="hljs-comment">#删除所有定时任务。</span></span>
  2. 1
    <span class="pln">crontab </span><span class="pun">-</span><span class="pln">r </span>
  3. 1
     
  4. 1
    <span class="com"><span class="hljs-comment">#单独删除某一个定时任务,进入编辑模式,注释掉需要删除的定时任务语句即可</span></span>
  5. 1
    <span class="pln">crontab </span><span class="pun">-</span><span class="pln">e        </span>
  6. 1
     
  7. 1
    <span class="com"><span class="hljs-comment"># 注:使用Crontab进行清理、删除、更改配置操作,有一定风险,请在测试前创建快照备份。</span></span>

常见问题


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

问题现象

非 root 用户在执行 crontab -l  或 crontab -e 等命令时,出现报错:

  1. 1
     <span class="typ">You</span> <span class="pun">(***)</span><span class="pln"> are not allowed to use this program </span><span class="pun">(</span><span class="pln">crontab</span><span class="pun">)</span>

问题原因

这是由于 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 用户的用户名。

如果有,编辑 cron.deny 文件删除该用户的用户名,保存后通过 service crond restart 重启cron服务

 

  1. 如果系统中有 cron.allow 文件,可以将该非 root 用户(以testuser1用户名为例)添加到 cron.allow 文件中。保存后重启cron服务。

blob.png

 

检查完以上两步,切换到该非root用户(testuser1),检查一下是否可以执行或编辑cron定制任务。

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

问题描述

阿里云ECS服务器,使用 Linux 定时服务 crontab 创建定时任务时执行失败。进入crontab主目录,发现没有该目录。

blob.png

分析解决

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

blob.png

此时可通过yum方式进行在线安装,参考命令如下:

  1. 1
    <span class="pln">yum install vixie</span><span class="pun">-</span><span class="pln">cron </span><span class="pun">依赖程序,主程序</span>
  2. 1
    <span class="pln">yum install crontabs  </span><span class="pun">任务程序,执行包</span>

安装完毕后,再次执行crontab -e 命令编辑新的计划任务,或crontab -l 查看已存在的历史任务。

blob.png

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: