• 每天一个linux命令9之crontab 定时任务


         crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此  任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

    1语法
        *  *  *  *  *  command 
        分 时 日 月 周 命令 
        第1列表示分钟1~59 每分钟用*或者 */1表示 
        第2列表示小时1~23(0表示0点) 
        第3列表示日期1~31 
        第4列表示月份1~12 
        第5列标识号星期0~6(0表示星期天) 
        第6列要运行的命令 
    2例子
        30  21 *  *  *  /usr/local/etc/rc.d/lighttpd restart 
        每晚的21:30重启apache。 
        
        45  4  1,10,22  *  *  /usr/local/etc/rc.d/lighttpd restart 
        每月1、10、22日的4 : 45重启apache。 
        
        10 1  *  *  6,0  /usr/local/etc/rc.d/lighttpd restart 
        每周六、周日的1 : 10重启apache。 

        0,30  18-23  *  *  *  /usr/local/etc/rc.d/lighttpd restart 
        每天18 : 00至23 : 00之间每隔30分钟重启apache。 

        0 23  *  *  6  /usr/local/etc/rc.d/lighttpd restart 
        每星期六的11 : 00 pm重启apache。 

        0  */1  *  *  *  /usr/local/etc/rc.d/lighttpd restart 
        每一小时重启apache 

        0 23-7/1  *  *  *  /usr/local/etc/rc.d/lighttpd restart 
        晚上11点到早上7点之间,每隔一小时重启apache 

    3命令
        crontab -l :列出用户目前的定时任务
        crontab -r : 删除目前的时程表 
        crontab -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI.
        
       /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
     
     4新增调度任务
        方式1:在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出      
                    推荐自定义的任务使用crontab -e命令添加,退出后用/etc/init.d/crond restart命令重启crond进程,官方文件说不用重启进程,但我遇到不重启无法运行任务的情况。
         方式2:编辑/etc/crontab文件
                 cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户            的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:
     
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
    HOME=/      //使用者运行的路径,这里是根目录
    # run-parts
    01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
    02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
    22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本
    42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本
     
    大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。


    5后台执行命令

    * * * * * command &

    当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。

    可以把输出接口放到某一个温江中

    2>&1表示所有的标准输出和错误输出都将被重定向到一个叫做log.file 的文件中

    command >log.file 2>&1 &


    3. 系统级任务调度与用户级任务调度
    系统级任务调度主要完成系统的一些维护操作,用户级任务调度主要完成用户自定义的一些任务,可以将用户级任务调度放到系统级任务调度来完成(不建议这么做),但是反过来却不行,root用户的任务调度操作可以通过“crontab –uroot –e”来设置,也可以将调度任务直接写入/etc/crontab文件,需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效的。


    个人工作案例
        定期删除文件夹下10天前的日志
        1编写脚本 clearlog.sh
                find /data/web/tomcat_lianyun/log/*.log.* -ctime +10|xargs rm -f 
        2添加到定时任务中
                crontab -e
                    30 8 * * * /data/web/tomcat_lianyun/clearlog.sh 
                wq保存退出即可(如果未执行,记得重启服务即可)









  • 相关阅读:
    Java监听器Listener使用详解
    浮点数运算
    变量
    java For 循环 运行顺序
    java ++运算
    一些硬件厂商的MAC号
    c# 双问号运算
    SQL Server 触发器
    微软企业库Microsoft Enterprise Library的相关文章链接
    关于ligerUi的ligertree的初始化默认选中指定项目的方法
  • 原文地址:https://www.cnblogs.com/edgedance/p/7027366.html
Copyright © 2020-2023  润新知