戒毒第几天最难受:完美的Sersync2 同步軟件的啟動腳本

来源:百度文库 编辑:中财网 时间:2024/04/28 09:57:49
完美的Sersync2 同步軟件的啟動腳本   #!/bin/sh
#在/usr/local/etc目錄下掃描sersync2的配置文件,並從文件名中提取特徵名生成一個列表
function scan_config_file(){
  find /usr/local/etc -name sync_*.xml > /tmp/sersync_config_list.tmp
  local line_count=`cat /tmp/sersync_config_list.tmp|wc -l`
  local i=1
  echo "[ "
  while read oneline
  do
        local bline=`basename $oneline .xml`
        echo ${bline/sync_/}
        [[ $i < $line_count ]] && echo "|"
        let i=i+1
  done < /tmp/sersync_config_list.tmp
  echo " ]"
}

#使用指南
function usage(){
  echo "用法: $0 "
  echo "说明: config_flag_name  sersync2命令調用的配置文件特徵名(不帶路徑、前綴和擴展名)"
  echo "      command           sersync2執行的命令(start|stop|restart)"
  echo "      config_flag_name取值範圍如下所示:"
  echo       `scan_config_file`
  exit 1
}

#打印退出信息並中止腳本執行
function _exit(){
  echo $1
  if [ -n "$3" ];then   #如果存在三個參數,則執行第二個參數所指定的指令,同時第三個參數為退出碼,否則第二個參數為退出碼
        $2
        exit $3
  else
        exit $2
  fi
}
#判斷進程是否存在
function pid_is_exist(){
  [[ ! -n "$1" ]] && _exit 0 0
  local PID=`ps -ef|grep $1|grep -v grep|awk '{print $2}'`
  [[ $PID == [0-9]* ]] && _exit $PID 1
  _exit 0 0
}
if [ ! -n "$1" ] || [ ! -n "$2" ];then
  echo "參數錯誤!"
  usage
fi
CONFIG_FILE="/usr/local/etc/sync_$1.xml"# 检测指定的配置文件是否存在,如不存在則中止腳本的執行
CONFIG_FILE="/usr/local/etc/sync_$1.xml"
[[ ! -f "$CONFIG_FILE" ]] && _exit "指定的配置文件[$CONFIG_FILE]不存在!" usage 0
#同步腳本文件全路徑名稱
SERSYNC=/usr/local/sersync/sersync2
#指定同步時的最大線程數
MAX_THREAD=5
#獲取進程號
pid_rt=`pid_is_exist $CONFIG_FILE`
start() {
  echo "Starting $prog..."
  [[ $pid_rt > 0 ]] && _exit "進程$pid_rt已經啟動,如需重啟請調用restart指令!" 0
  $SERSYNC -o $CONFIG_FILE -n $MAX_THREAD -r -d
  echo "Started $prog OK!"
}
stop() {
  echo "Stopping $prog..."
  [[ $pid_rt == 0 ]] && _exit "進程沒有啟動!" 0
  kill -9 `ps -ef|grep $CONFIG_FILE|grep -v grep|awk '{print $2}'`
  echo "Stopped $prog OK!"
}
case "$2" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        stop
        start
        ;;
  *)
        echo $"Usage: $prog {start|stop|restart}"
        ;;
esac