zoukankan      html  css  js  c++  java
  • 最近写了一个bash shell脚本

    #Linux下最近写了几个shell脚本, 有点小收获, 记录下来, 以后在写shell时, 备查.
     
    ##=============================
    ##file: start_manually.sh
    ##purpose: start all background programs manually
    ##=============================

    #知识点: 等待用户的输入
    read -p "This shell will kill all unloading background programs before re-start. Do you continue? (y/n) " RESP
    if [ "$RESP" = "y" ];
    then # 在脚本或命令行中,if...then...else...fi或者while...do...done结构, 如果两个关键词在同一行中,则必须要有分号“;”来分隔,也就是说, 在不同行中可用可不用分号,但在同一行中,必须有分号,否则bash将无法解析这些关键词.
      echo "start_manually.sh ...."
    else
      exit 0  #知识点, 直接退出程序的写法
    fi


    LOG_FILE=$HOME/unload_start_manually.log
    #知识点: 如何判断文件是否存在, 不存在的话, touch一个空文件
    if [ ! -f $LOG_FILE ]
    then
      touch $LOG_FILE
    fi

    #知识点: 如何拿到文件的size
    LOG_FILE_SIZE=`ls -l $LOG_FILE | awk '{print $5}'`


    #知识点: 如果log文件太大的话, 仍往其中追加内容, 效率就会变差.
    #一个好的做法是: 在写日志前, 先看看log文件的大小,
    #如果太大, 重新生成一个文件(因为太老的日志其实没有多少用处), 否则, 直接追加内容
    if [ $LOG_FILE_SIZE -gt 10000 ];
    then
      echo "New file " > $LOG_FILE
    fi
    echo "`date`" >>$LOG_FILE #知识点: 必须使用""来包着, 如果使用''包着, 不会输出当前日期


    #知识点: 同时输出日志到log文件和屏幕上
    echo "Define some common variables and change current path" >>$LOG_FILE
    echo "Define some common variables and change current path"
    . $HOME/.bash_profile
    IS_TEST=$UNLOAD_IS_TEST
    cd /data/unload


    #知识点: 如何通过程序的名称来kill的进程
    echo "kill the unload background processes">>$LOG_FILE
    ps -ef|grep -v grep|grep -i 'java -jar JobMonitor'|awk '{printf("kill -9 %s\n",$2)}' |sh
     


    echo "Run unload background processes">>$LOG_FILE
    echo "Run unload background processes"
    #知识点: 通过nohup方式启动后台jar进程, 因为jar程序本身使用了log4j生成日志,
    #所以nohup命令直接将日志和错误日志输出定向到/dev/null
    nohup java -jar JobMonitor.jar  $IS_TEST   > /dev/null 2> /dev/null &
     
     

    ##step 90: end
    echo "=====" >>$LOG_FILE
    echo "====="

  • 相关阅读:
    hdu6199 gems gems gems dp+博弈
    codeforces 429 On the Bench dp+排列组合 限制相邻元素,求合法序列数。
    hdu6153 扩展kmp求一个字符串的后缀在另一个字符串出现的次数。
    hdu6149 Valley Numer II 分组背包+状态压缩
    hdu6125 Free from square 分组背包+状态压缩
    hdu1712 ACboy needs your help 分组背包
    hdu6121 Build a tree 模拟
    hdu6134 Battlestation Operational 莫比乌斯第一种形式
    hdu6143 Killer Names 容斥+排列组合
    将Long类型转为字母数字组合的jar包---Hashids
  • 原文地址:https://www.cnblogs.com/harrychinese/p/One_Simple_Bash_Script_Sample.html
Copyright © 2011-2022 走看看