zoukankan      html  css  js  c++  java
  • linux定时任务

    普通用户定时执行脚本

    #安装
    yum   provides  crontab 
    
    yum install  cronie#好像是这个
    
    sudo  apt  install  cron
    
    ##编写脚本
    vi tt.sh
    #!/bin/sh 
    echo `date +%T`   >> /home/data/time.log  2>&1 
    
    chmod +x  tt.sh
    
    
    ##设置crontab
    crontab  -e 
    * *  *  * *  . /etc/profile;/bin/sh  /home/data/tt.sh  
    
    
    ##重启服务,会立即执行
    sudo  systemctl   stop   cron
    sudo  systemctl   start  cron
    sudo  systemctl   status   cron
    看到类似的显示
    2月 20 14:40:01  -gpu CRON[4334]: (data ) CMD (. /etc/profile;/bin/sh  /home/data/tt.sh >>    /home/data/tt.log    2>&1 )
    2月 20 14:41:01  -gpu CRON[4460]: (data ) CMD (. /etc/profile;/bin/sh  /home/data/tt.sh >>    /home/data/tt.log    2>&1 )
    2月 20 14:42:01  -gpu CRON[4473]: (data ) CMD (. /etc/profile;/bin/sh  /home/data/tt.sh >>    /home/data/tt.log    2>&1 )
    表示执行成功
    
    
    
    ########################################################
    
    实例1:每1分钟执行一次myCommand
    * * * * * myCommand
    实例2:每小时的第3和第15分钟执行
    3,15 * * * * myCommand
    实例3:在上午8点到11点的第3和第15分钟执行
    3,15 8-11 * * * myCommand
    实例4:每隔两天的上午8点到11点的第3和第15分钟执行
    3,15 8-11 */2  *  * myCommand
    实例5:每周一上午8点到11点的第3和第15分钟执行
    3,15 8-11 * * 1 myCommand
    实例6:每晚的21:30重启smb
    30 21 * * * /etc/init.d/smb restart
    实例7:每月1、10、22日的4 : 45重启smb
    45 4 1,10,22 * * /etc/init.d/smb restart
    实例8:每周六、周日的1 : 10重启smb
    10 1 * * 6,0 /etc/init.d/smb restart
    实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
    0,30 18-23 * * * /etc/init.d/smb restart
    实例10:每星期六的晚上11 : 00 pm重启smb
    0 23 * * 6 /etc/init.d/smb restart
    实例11:每一小时重启smb
    * */1 * * * /etc/init.d/smb restart
    实例12:晚上11点到早上7点之间,每隔一小时重启smb
    0 23-7 * * * /etc/init.d/smb restart
    

    注意:
    有时我们创建了一个crontab,但是这个任务却无法自动执行,而手动执行这个任务却没有问题,这种情况一般是由于在crontab文件中没有配置环境变量引起的.
    不要假定cron知道所需要的特殊环境,它其实并不知道。所以你要保证在shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。所以注意如下3点:

    1,脚本中涉及文件路径时写全局路径;

    2,脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:

    cat start_cbp.sh
    !/bin/sh
    source /etc/profile
    export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf
    /usr/local/jboss-4.0.5/bin/run.sh -c mev &
    

    3,当手动执行脚本OK,但是crontab死活不执行时,很可能是环境变量惹的祸,可尝试在crontab中直接引入环境变量解决问题。如:

    0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh
    

    注意清理系统用户的邮件日志
    每条任务调度执行完毕,系统都会将任务输出信息通过电子邮件的形式发送给当前系统用户,这样日积月累,日志信息会非常大,可能会影响系统的正常运行,因此,将每条任务进行重定向处理非常重要。 例如,可以在crontab文件中设置如下形式,忽略日志输出:

    0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1
    

    新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行。

    当crontab失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。

    千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。

    在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+%Y%m%d’。

    更新系统时间时区后需要重启cron,在ubuntu中服务名为cron

    参考:
    https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html

  • 相关阅读:
    formValidator4.1.1问题汇总
    什么,又是字符串拼接,我有些不淡定了
    webform下的分页辅助类再总结
    winform下的一个分页控件总结
    总结SQL Server窗口函数的简单使用
    sql复制表定义及复制数据行
    动态SQL开发基础和经验再总结
    c#执行定时计算限制操作(计时器)
    ado.net关于操作数据库的连接字符串整理
    使用Visual Studio实现WinForm多语言版本实例
  • 原文地址:https://www.cnblogs.com/g2thend/p/12335665.html
Copyright © 2011-2022 走看看