12 Linux下crontab详解

时间:2022-12-20 14:18:10

1. 概述:

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

2. 任务调度的分类:

  • 系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

           12 Linux下crontab详解

          前四行是用来配置crond任务运行的环境变量

          第一行 SHELL变量指定了系统要使用哪个shell,这里是bash

          第二行 PATH变量指定了系统执行命令的路径

          第三行 MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户

          第四行 HOME变量指定了在执行命令或者脚本时使用的主目录。

         第六至九行表示的含义将在下个小节详细讲述。这里不在多说。

  • 用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。

 

3. crond 服务

  • 安装crontab:

           # yum install crontabs

  • 服务操作说明:

          #/sbin/service crond start //启动服务

          #/sbin/service crond stop //关闭服务

          #/sbin/service crond restart //重启服务

          #/sbin/service crond reload //重新载入配置

  • 查看crontab服务状态:

           #service crond status

  • 手动启动crontab服务:

           #service crond start

  • 查看crontab服务是否已设置为开机启动,执行命令:

           #ntsysv

           加入开机自动启动:

          #chkconfig –level 35 crond on

  • 终止任务调度

          #crontab -r

  • 列出当前任务调度

          #crontab –l

4. Crontab使用说明

     12 Linux下crontab详解

5. 设置用户任务调度

       #crontab –e

       #输入 * * * * * ls –l /etc/ > /tmp/to.txt

        12 Linux下crontab详解

        12 Linux下crontab详解

        注:*代表每分钟,每小时,每天,每月等

        12 Linux下crontab详解

6. 设置crontab的另一种方法   

        先创建shell文件,然后在crontab中设置执行该shell文件

  • #vi /tmp/mytask.sh

          12 Linux下crontab详解

  • 更改mytask.sh文件的权限类型(可读可写可执行)

          #chmod 744 mytask.sh

         12 Linux下crontab详解

  • #crontab –e

           追加输入* * * * * /tmp/mytask.sh

         12 Linux下crontab详解

  • 这里我们可以看到通过crontab创建的to1.txt文件

           12 Linux下crontab详解

           12 Linux下crontab详解

  • 查看当前任务调度

        12 Linux下crontab详解