• linux定时任务及文件操作


    查看定时任务

    crontab -l

    • 注册定时任务

    crontab -e
    然后就像 vim 一样编辑自己的定时任务。
    如:
     * * * * * . /home/hadoop/timer/check_job.sh >> /home/hadoop/timer/logs/check_job.log

    • 定时任务解析
    1. *和*之间的空格,是必须的
    2. *分别代表:分,时,日,月,周
      • 1. 分 的取值范围为:0-59
      • 2. 时 的取值范围为:0-23
      • 3. 日 的取值范围为:1-31
      • 4. 月 的取值范围为:1-12
      • 5. 周 的取值范围为:0-7 
    3. *后面是需要执行的命令
    4. "." 代表是shell 命令,也可以使用 sh
    5. ">>" 前面的是需要定时调用的shell,后面是 需要输出的 log 文件的位置​
    • 实例

    1.  * * * * * 代表每分钟执行一次,也可以写成 */1 * * * *,/1代表一分钟执行一次 
    2.  30 */1 * * * 代表每小时的 30 分执行一次


    以下是对文件的操作

    • 根据文件名称取得最大日期对文件
      • 文件名称的格式为:filter_cache_20171101.se 

      max_date=0
      # get the latest file and copy to hdfs
      cd /home/hadoop/.../checkpoint/filter
      for dir in $(ls -l ./ | awk '/^d/{print $NF}')
      do
         if [[ -d $dir && $dir == *\_* ]]; then
            f_d=$(echo $dir | cut -d _ -f 3 | cut -d . -f 1)
            if [[ $max_date < $f_d ]]; then
              max_date=$f_d
              max_filter=$dir
            fi
         fi
      done
      echo " max date is : "$max_date
      echo " max filter is : "$max_filter
    • 复制最近日期对文件到hdfs
      • 如果文件存在,提示已经存在
      hadoop fs -test -e /data/.../bloom_filters/$max_filter
      if [[ $? == 0 ]]; then
          echo " filter is already exist : "$max_filterF
      else
          echo " start hdfs copy "
          hadoop fs -put $max_filter /data/.../bloom_filters
      fi
    • 设定需要删除过期文件的指定时间
      remove_week=$(date -d "$max_date 7 days ago" +%Y%m%d)
      echo " 删除本地序列化文件的日期界限:"$remove_week
      remove_date=$(date -d "$max_date 30 days ago" +%Y%m%d)
      echo " 删除文件 和 Hadoop filter 的日期界限:"$remove_date
    • 删除指定日期30天以外的本地文件,并且删除小于指定日期7天以外的指定文件夹的文件
      for r_dir in $(ls -l ./ | awk '/^d/{print $NF}')
      do
         if [[ -d $r_dir && $r_dir == *\_* ]]; then
            r_d=$(echo $r_dir | cut -d _ -f 3 | cut -d . -f 1)
            if [[ $r_d < $remove_date ]]; then
                echo " remove filter_dir is: "$r_dir
                rm -r $r_dir
            elif [[ $r_d < $remove_week ]]; then
                echo " remove filter is: "$r_dir
                rm -r $r_dir/*.FILTER.SER
            fi
         fi
      done
    • 删除hdfs上指定日期30以外的文件
  • 相关阅读:
    node错误: primordials is not defined
    单片机TTL转RS232模块DB9数据线接口排针接口多接口方便连接
    单片机串口自适应电平5V TTL电平兼容转换3.3V电平串口转换NMOS管
    USB串口转RS485转换器工业级usb串口转RS485模块转换器串口通讯
    Kafka丢数据、重复消费、顺序消费的问题
    纪念第一次做的拉花拿铁
    《奢侈的理由》总结
    【算法框架套路】回溯算法(暴力穷举的艺术)
    svg中矩形旋转问题
    性能测试工具集锦
  • 原文地址:https://www.cnblogs.com/min-yu/p/13256166.html
Copyright © 2020-2023  润新知