linux下的定时任务

时间:2023-12-12 13:30:50

  cronb命令

  在Linux中,周期执行的任务一般由cron这个守护进程来处理。ps -ef | grep cron。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。

  cron的配置文件称为"crontab",是"cron table"的简写。

  cron在3个地方查找配置文件:

    /var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名。一般一个用户最多只有一个crontab文件。

    /etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab

    /etc/cron.d  这个目录用来存放任何要执行的crontab文件或脚本

  crontab的权限问题到/var/adm/cron下看文件cron.allow和cron.deny是否存在。若两个文件都存在,则只有root用户才能使用crontab命令;若cron.allow存在但cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,若root用户也不再cron.allow中,则root也不能使用crontab;若cron.allow不存在,cron.deny存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其他用户都能使用;若两个文件都存在,则列在cron.allow文件中的用户可以使用crontab。

  在crontab文件中需输入执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。

  每个域之间使用空格或者制表符分割。格式:

  minute(0-59) hour(0-23) day-of-month(1-31) month-of-year(0-12) day-of-week(0-6) commands

  除了上述限定范围还有几个特殊的符号就是*、/、-、,。*代表所有的取值范围内的数字,\代表每的意思(\5每5个单位),-代表从某个数字到某个数字,,代表几个离散的数字

  cron是linux的内置服务,它不自动启动。

  /sbin  service crond start  #启动服务

  /sbin  service crond stop   #关闭服务

  /sbin  service crond restart  #重启服务  

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

在/etc/rc.d/rc.local这个脚本末尾加上/sbin/service crond start,则在系统启动的时候自动启动了。

  cron命令的一些参数与说明

    crontab -u  #设定某个用户的cron服务,一般root用户在执行这个命令的时候需要次参数

    crontab -l    #列出某个用户cron服务的详细内容

    crontab -r    #删除每个用户的cron服务

    crontab -e    #编辑某个用户的cron服务

   30     5       *           *     *     ls             指定每天的 5:30 执行ls命令

  at命令

  若我们只想要让特定任务执行一次,这种情况下比较适合at监控程序。at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它。at命令相当于一个shell,运行at time命令时,他发送一个命令,可以输入任意命令或者程序。格式:at now time

  linux默认不启动,service atd status检查atd的状态。service atd start启动atd服务。at执行的具体内容一般位于/var/spool/at目录下。

  at 5pm 3 days /bin/ls  #三天后的5点执行/bin/ls