• 使用crontab设置定时任务


    配置文件

    crontab主要的配置文件如下:

    • /etc/crontab:系统cron表
    • /etc/cron.d/*:保存由软件包安装脚本创建的cron文件的目录
    • /var/spool/cron/*:保存用户创建的cron文件的目录
    • /etc/cron.allow:权限允许文件
    • /etc/cron.deny:权限禁止文件

    cron使用shell(/usr/bin/sh)从用户的HOME目录调用该命令。
    cron为每个shell提供了一个默认环境:

    HOME=<Users Home Dir>
    LOGNAME=<Users Login ID>
    PATH=/usr/bin:/usr/sbin:.
    SHELL=/usr/bin/sh
    

    如果没有设置相关的环境变量,会造成如$PATH问题导致的命令找不到。
    可以在cron配置文件的顶部加上:

    SHELL=/bin/bash
    PATH=/usr/bin:/bin:/sbin:/usr/sbin
    

    cron配置文件区别

    cron的配置文件可在三个地方/etc/crontab/etc/cron.d//var/spool/cron/crontabs/

    /var/spool/cron/crontabs/通过crontab命令来控制, 属于用户的, 所以这个命令设置了guid, 属于crontab用户组.

    /etc/crontab 默认是控制/etc/cron.*, 如/etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly这些.

    /etc/cron.d/目录下也是存放crontab的配置文件.

    /etc/crontab/etc/cron.d/在配置定时任务时,需要指定用户是root,而/var/spool/cron/crontabs/已经是属于用户控制的, 所以不需要指定用户, 这是格式上的区别.

    权限控制文件

    cron.allow的一个示例如下:

    root
    nick
    dee
    sarah
    

    如果 cron.allow 文件存在,只有在文件中出现其登录名称的用户可以使用 crontab 命令。root 用户的登录名必须出现在 cron.allow 文件中,如果这个文件存在的话。系统管理员可以明确的停止一个用户,通过使用 crontab 命令,同时在 cron.deny 文件中列出用户的登录名。如果只有 cron.deny 文件存在,任一名称没有出现在这个文件中的用户可以使用 crontab 命令。

    如果以下一个条件成立,用户将不能使用 crontab 命令:

    • cron.allow 文件和 cron.deny 文件不存在(只允许 root 用户)。
    • cron.allow 文件存在,但用户的登录名未在其中列出。
    • cron.deny 文件存在,且用户登录名已在其中列出。

    如果 cron.allow 和 cron.deny 文件都不存在,只有被 root 用户授权的人可以用 crontab 命令提交一个作业。

    crontab命令

    条目格式

    minute  hour  day  month  weekday  command
    

    各位置的取值如下:

    • minute: 表示分钟,可以是从0到59之间的任何整数。
    • hour:表示小时,可以是从0到23之间的任何整数。
    • day:表示日期,可以是从1到31之间的任何整数。
    • month:表示月份,可以是从1到12之间的任何整数。
    • week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
    • command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

    在以上各个字段中,还可以使用以下特殊字符:

    • 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
    • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
    • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
    • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

    常用命令

    // 添加任务
    crontab -e
    // root用户可以编辑其他用户的任务
    crontab -u suraer -e
    
    // 添加文件的任务
    crontab -u suraer suraer_cron.txt
    
    // 删除任务
    crontab -r
    // root用户可以删除其它用户的任务
    crontab -u suraer -r
    
    // 列出任务
    crontab -l
    // root用户查看其它用户的任务
    crontab -u suraer -r
    
    // 开关cron服务
    service crond start
    service crond stop
    

    默认cron任务会发送执行任务邮件到用户帐号,如果不需要的话可以在任务行的最后面加上如下内容

    >/dev/null 2>&1
    

    可以将任务执行的信息输出到一个文件作为日志查看,如下示例:

    10 10 * * * rm /home/ashish/tmp/* > /home/ashish/cronlogs/clean_tmp_dir.log
    

    参考链接:
    https://www.ibm.com/support/knowledgecenter/zh/ssw_aix_71/com.ibm.aix.cmds1/crontab.htm
    http://vlinux-freak.blogspot.jp/2010/12/working-with-crontab-scheduler.html

  • 相关阅读:
    Traceroute侦测主机到目的主机之间所经路由情况的重要工具
    TCP/IP详解之IP协议
    Hello world
    [LeetCode] 198. 打家劫舍
    [LeetCode] 191. 位1的个数
    [LeetCode] 190. 颠倒二进制位
    python里的排序
    [LeetCode] 189. 旋转数组
    [LeetCode]187. 重复的DNA序列
    [LeetCode] 179. 最大数
  • 原文地址:https://www.cnblogs.com/suraer/p/8617509.html
Copyright © 2020-2023  润新知