• linux的cron服务及应用


    Linux下的Cron用于定时执行设置的周期性指令,是Linux的内置服务,可以用以下的方法启动、关闭这个服务:

    /sbin/service crond start //启动服务
    /sbin/service crond stop //关闭服务
    /sbin/service crond restart //重启服务
    /sbin/service crond reload //重新载入配置

    或者使用 /etc/init.d/cron [start/stop/restart]命令

    如果将这个服务在系统启动的时候自动启动,在/etc/rc.d/rc.local这个脚本的末尾加上:

    /sbin/service crond start
    • cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
    crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
    crontab -l //列出某个用户cron服务的详细内容
    crontab -r //删除没个用户的cron服务
    crontab -e //编辑某个用户的cron服务
     
    输入:crontab -e,有时可能会让你选择一个编辑器,选就好了,进入编辑模式后按照格式添加任务

     .---------------- 分钟(0 - 59)
     | .------------- 小时(0 - 23)
     | | .---------- 月天 (1 - 31)
     | | | .------- 月 (1 - 12) 或 jan,feb,mar,apr ...
     | | | | .---- 周天 (0 - 6) (Sunday=0 or 7) 或 sun,mon,tue,wed,thu,fri,sat
     | | | | |
     * * * * * [用户名] [可选参数] 命令

    前5个字段还可以使用几个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字

    在可选参数这要提一下,run-parts,如果使用这个参数后面的命令就是文件夹路径,执行这个路径下所有脚本,例如

    02 4 * * * root run-parts /etc/cron.daily #每天4:02执行/etc/cron.daily内的脚本

     

    编辑完后保存退出,自动在/var/spool/cron下生成一个与此用户同名的文件,cron启动后每分钟读一次/var/spool/cron内的所有文件,检查是否要执行里面的命令,因此此文件修改后不需要重新启动cron服务
    • 编辑/etc/crontab 文件配置cron,cron服务每分钟也读一次/etc/crontab,用crontab配置是针对某个用户的,这个文件针对系统的任务,添加任务的格式同上
     
    下面列出cron相关文件
    /etc/cron.deny #该文件中所列的用户不允许使用Crontab命令 
    
    /etc/cron.allow #该文件中所列的用户允许使用Crontab命令 
    
    /var/spool/cron/ #是所有用户的crontab文件目录

    /etc/crontab #系统级别cron任务

    /var/spool/mail/ #任务有输出或出错邮件目录
     
    下面是我设定的一个简单定期删除日志文件的任务
    在 /opt/app/hadoop/mylogs_clear.sh写入命令
    find /opt/app/hadoop/zk*/logs/version-2/ -mtime +20 -type f -name "log.*" -exec rm -rf {} ; #删除修改日期20天前的以log.开头的日志
    #find /opt/app/hadoop/zk*/logs/version-2/ -mtime +20 -type f -name "log.*" -exec mv {} /opt/app/hadoop/logs_bk/ ;

    执行:chmod u+x /opt/app/hadoop/mylogs_clear.sh 提升执行权限,最好确认下有没有运行权限,否则有肯能造成运行失败

    然后,crontab -e编辑加入任务

    40 9 * * 4 /opt/app/hadoop/mylogs_clear.sh #周四9:40执行

    如果不放心可以重启下cron服务 

    附:

    #-mtime参数说明
    -mtime +20  #修改时间在【当前时间-(20+1)*24】之前
    -mtime -20  #修改时间在【当前时间】和【当前时间-20*24】以内
    -mtime 20  #修改时间在【当前时间-(20+1)*24】 和【当前时间 - 20*24】之间

    参考文章:

    1. Linux应用总结(1):自动删除n天前日志

    2. Linux中find常见用法示例

    3. Ubuntu下crontab命令的用法

  • 相关阅读:
    css backgroud属性与雪碧技术
    css margin 外边距塌陷问题
    css 浮动元素与清除浮动
    css 盒模型的概念与使用
    七年iOS架构师教你如何一举拿下35K的Offer,(附面试技巧)
    iOS开发者月薪想要突破30K,需要经历+提升些什么?
    月薪 8K 与30K的程序员 区别到底在哪里?
    那些月薪35K以上的iOS开发者 都掌握了什么技能?
    从事 iOS 开发8年的面经——送给准备跳槽的你!
    想进BAT大厂的 iOS程序员,看完这个你还觉得Offer难拿吗???
  • 原文地址:https://www.cnblogs.com/yhzh/p/5089551.html
Copyright © 2020-2023  润新知