戒毒第几天最难受:完美的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
fiCONFIG_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
#在/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
fiCONFIG_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