设为首页 收藏本站
查看: 803|回复: 0

shell 切割脚本

[复制链接]

尚未签到

发表于 2018-8-27 09:32:10 | 显示全部楼层 |阅读模式
  #!/bin/bash
  #return error code
  #0: success
  #1: parameter error
  #6: custom.log file is empty
  #7: cut  file error
  #8: up log file success
  TAR_DIR_FILE_MAX=30
  MAIN_LOG_FILE_MAX=1024
  MAIN_LOG_NAME='custom.log'
  CUT_MAIN_LOG_FILE="custom_$(date +"%Y%m%d%H%M").log"
  function usage()
  {
  echo "Options:"
  echo "       -f: flg"
  echo "       -t: custom.log tar path"
  echo "       -l: custom.log path"
  echo "   -h: show help info"
  }
  function check_parameter()
  {
  test "x${LOG_FLG}-${TAR_PATH}-${MAIN_LOG_PATH}" = "x--" && echo "Error: argment is empty" && usage && exit 1
  test "x$LOG_FLG" != "x1" && echo "Error: -f flg argment error" && usage && exit 1
  test "x$TAR_PATH" = "x" && echo "Error: -t custom.log tar path" && usage && exit 1
  test "x$MAIN_LOG_PATH" = "x" && echo "Error: -l custom.log path" && usage && exit 1
  [ -f "$MAIN_LOG_PATH" ] && echo "Error: -l must is dir" && usage && exit 1
  [ -f "$TAR_PATH" ] && echo "Error: -t must is dir" && usage && exit 1
  }
  function touch_main_file()
  {
  touch "${MAIN_LOG_PATH}/${MAIN_LOG_NAME}"
  chmod 777 "${MAIN_LOG_PATH}/${MAIN_LOG_NAME}"
  }
  function rm_tar_file()
  {
  SUM_TAR_FILE=`ls ${TAR_PATH}/ |wc -l`
  if [ "$SUM_TAR_FILE" -gt "$TAR_DIR_FILE_MAX" ]; then
  `find ${TAR_PATH}/ -mtime +2|xargs rm -f`
  fi
  }
  while getopts :f:t:l: OPTION
  do
  case $OPTION in
  f)
  LOG_FLG=$OPTARG
  ;;
  t)
  TAR_PATH=$OPTARG
  ;;
  l)  MAIN_LOG_PATH=$OPTARG
  ;;
  h)
  usage
  exit 0
  ;;
  \?)
  echo "-$OPTARG: invalid option"
  usage
  exit 1
  ;;
  :)
  echo "-$OPTARG: miss option argment"
  usage
  exit 1
  ;;
  esac
  done
  #### 检查参数
  check_parameter
  #### 切割
  [ ! -f "${MAIN_LOG_PATH}/${MAIN_LOG_NAME}" ] && touch_main_file
  [ ! -s "${MAIN_LOG_PATH}/${MAIN_LOG_NAME}" ] && echo "${MAIN_LOG_FILE}/${MAIN_LOG_NAME} file is empty" && exit 6
  mv ${MAIN_LOG_PATH}/${MAIN_LOG_NAME}   ${MAIN_LOG_PATH}/${CUT_MAIN_LOG_FILE}
  test "x$?" != "x0" && echo "cut ${MAIN_LOG_PATH}/${MAIN_LOG_NAME} file error" && exit 7
  touch_main_file
  #### 打包
  tar cjfP  ${TAR_PATH}/${CUT_MAIN_LOG_FILE}.tar.bz2  ${MAIN_LOG_PATH}/${CUT_MAIN_LOG_FILE}
  #### 上报
  FILE_SIZE=`du ${MAIN_LOG_PATH}/${CUT_MAIN_LOG_FILE}|awk '{print $1}'`
  [ "$FILE_SIZE" -gt "$MAIN_LOG_FILE_MAX" ] && UNIQ_FILE=`cat ${MAIN_LOG_PATH}/${CUT_MAIN_LOG_FILE}|sort|uniq|head -50` || UNIQ_FILE=`cat ${MAIN_LOG_PATH}/${CUT_MAIN_LOG_FILE}|sort|uniq`
  #### 删除
  rm -f ${MAIN_LOG_PATH}/${CUT_MAIN_LOG_FILE}
  #### 删除tar目录下最旧的文件
  rm_tar_file
  echo -e "${FILE_SIZE}(k)\n${UNIQ_FILE}" && exit 8
  ======= php
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-557113-1-1.html 上篇帖子: Shell脚本:使用SSH登陆并更改密码 下篇帖子: linux自定义和使用 shell 环境(一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表