• cron 任务


      1 相关文件
      2 
      3 
      4 /etc/crontab
      5 /etc/cron.deny                设置哪个用户有权限运行 cron 任务
      6 /var/spool/cron/root
      7 /var/spool/cron/user
      8 /var/log/cron                只要在这个 log 里面出现的命令就说明 cron 任务执行了,执行失败会向相应的用户发送邮件
      9 
     10 
     11 
     12 任务不执行及 cron 相关问题
     13 
     14 
     15 开机自动运行 cron 的命令“ systemctl enable crond.service ”。
     16 
     17 
     18 新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行,使用 systemctl restart crond.service 重启 cron 。
     19 
     20 
     21 环境变量
     22 
     23 Crontab任务的执行环境与手动执行时的执行环境不同,编码时,尽量通过全路径名引用文件或调用命令,或者将引用的文件或者命令的路径添加到环境变量中,其默认环境变量如下
     24 SHELL=/bin/sh
     25 USER=root
     26 PATH=/usr/bin:/bin
     27 PWD=/root
     28 SHLVL=1
     29 HOME=/root
     30 LOGNAME=root
     31 _=/usr/bin/env
     32 
     33 我修改的环境变量如下
     34 SHELL=/bin/bash
     35 PATH=/bin:/lib64:/sbin:/usr/bin:/usr/lib64:/usr/sbin:/usr/local/bin:/usr/local/lib64:/usr/local/sbin
     36 MAILTO=root
     37 LANG=zh_CN.UTF-8
     38 HOME=/root
     39 USER=root
     40 LOGNAME=root
     41 DISPLAY=:0
     42 
     43 
     44 需要图形化桌面的程序需要指定桌面环境
     45 
     46 任务是“ firefox ”,不执行,也不发邮件给此用户,而是发给了 root ,邮件报告是“ no display specified ”。
     47 解决方法是添加环境变量“ DISPLAY=:0 ”,重启cron任务。
     48 "export DISPLAY=:0" and then I did a "xhost +" and now its working fine. I also did a "/usr/bin/firefox $myHost". Now its working fine. Thank you        ==============http://askubuntu.com/questions/417111/open-firefox-from-bash-file-error-no-display-specified
     49 
     50 
     51 确定用户是否可以创建 cron 任务
     52 
     53 在 /etc/cron.deny 里设置用户权限。
     54 
     55 
     56 Crontab任务的输出重定向文件无写权限
     57 
     58 通常情况下,在添加crontab任务之前,都会手动执行一下待添加的crontab任务,此时,通过重定向产生的文件,只执行该任务的用户有写权限,由sudo -u指定的用户并没有写权限。本质原因是sudo –u对重定向符不起作用。如此,在添加crontab任务,以sudo –u中指定的用户身份运行时,由于对重定向文件无写权限,crontab任务会安静的失败
     59 
     60 
     61 Crontab 任务配置文件 owner 不是 root
     62 
     63 在添加crontab任务时,如果配置文件owner不是root,任务会失败(志遥以前也提起过),不过这种失败,可以在cron日志中看到如下错误信息:
     64 (*system*)WRONG FILE OWNER
     65 
     66 
     67 Crontab 任务配置文件为单行
     68 
     69 Crontab 任务都是单行,可如果配在配置文件中,任务字符串后没有换行符,这个任务就有可能也会静悄悄地失败。为安全起见,建议多一下按下回车键。
     70 
     71 
     72 cron 会忽略点系统的i18n,默认使用posix的来decode,导致awk识别错误。
     73 
     74 
     75 cron 配置文件从其他机器复制时没有更新文件的创建时间,这个cron任务的时间属性不变,这个cron任务有可能不执行,需要用 touch 更新下时间“ sudo touch /var/spool/cron/user ”。
     76 
     77 
     78 crontab中“%”要转义
     79 
     80 在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’`。
     81 
     82 
     83 当crontab突然失效时,可以尝试重启 cron 解决问题,或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。
     84 
     85 
     86 不要乱运行“ crontab -r ”。它从 Crontab 目录( /var/spool/cron )中删除用户的 Crontab 文件,删除了该用户的所有crontab都没了。
     87 
     88 
     89 每条 JOB 执行完毕之后,系统会自动将输出发送邮件给当前系统用户。日积月累,非常的多,甚至会撑爆整个系统。所以每条 JOB 命令后面进行重定向处理是非常必要的: >/dev/null 2>&1 。前提是对 Job 中的命令需要正常输出已经作了一定的处理, 比如追加到某个特定日志文件。
     90 
     91 
     92 
     93 示例
     94 
     95 
     96 # .---------------- minute (0 - 59)
     97 # |  .------------- hour (0 - 23)
     98 # |  |  .---------- day of month (1 - 31)
     99 # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    100 # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)  OR
    101 #sun,mon,tue,wed,thu,fri,sat
    102 # |  |  |  |  |
    103 # *  *  *  *  *  command [args]
    104 
    105 
    106 59 12 * * * SHELL=/bin/bash PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/Wizard/.local/bin:/home/Wizard/bin MAILTO=root command
    107 
    108 30 21 * * * /usr/local/etc/rc.d/lighttpd restart    每晚的21:30重启apache
    109 
    110 */1 * * * * root hwclock --hctosys            每隔1分钟同步系统时钟和硬件时钟
    111 
    112 * */1 * * * /usr/local/etc/rc.d/lighttpd restart    每一小时重启apache
    113 
    114 * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart    晚上11点到早上7点之间,每隔一小时重启apache
    115 
    116 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart    每月1、10、22日的4 : 45重启apache
    117 
    118 10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart    每周六、周日的1 : 10重启apache
    119 
    120 0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart    在每天18 : 00至23 : 00之间每隔30分钟重启apache
    121 
    122 0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart        每星期六的11 : 00 pm重启apache
    123 
    124 0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart    每月的4号与每周一到周三的11点重启apache
    125 
    126 0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart    一月一号的4点重启apache
    127 
    128 
    129 
    130 参考
    131 
    132 
    133 http://askubuntu.com/questions/417111/open-firefox-from-bash-file-error-no-display-specified            图形桌面
  • 相关阅读:
    使用较大的 JavaScript 函数
    js代码,执行简单的按钮翻转
    GUID!!!!
    日期可以直接比较,但从页面取来的日期要用单引号括起来!
    statement
    关于switch
    关于Confirm
    JS代码,将终端用户(Web 页面的查看者)的计算机时间置于一个按钮 Web 服务器控件上
    测试时应该注意的
    如果你觉得现在的生活并不好,说明你的努力还不够
  • 原文地址:https://www.cnblogs.com/little-snake/p/4921014.html
Copyright © 2020-2023  润新知