您的位置:首页 > 运维架构 > Shell

Shell开发rsync启动脚本

2018-10-14 20:06 543 查看

需求:实现shell脚本对rsync的start|stop|restart
rsync pid所在路径:/var/run/rsyncd.pid
rsync启动命令:rsync --daemon
rsync进程停止命令:pkill rsync

文中通过判断rsync pid所在路径和进程状态来实现rsync的start|stop|restart

1)脚本演示

[root@jason scripts]# cat rsync.sh
#!/bin/sh
#This is the launch script for rsync.
#-------------------------------------
#Author:jason
#QQ:760966297
#mile:jasonminghao@163.com
#-------------------------------------
[ -f /etc/init.d/functions ] && . /etc/init.d/functions || exit 1
PID_PATH=/var/run/rsyncd.pid

fun_usage(){
echo "Usage:$0 {start|stop|restart}"
exit 2
}

fun_start(){
if [ ! -e $PID_PATH ]; then
rsync --daemon
PORT=`netstat -lntup |grep rsync|wc -l`
[ $PORT -eq 2 ]&& action "Rsync is startup successful." /bin/true ||action "Rsync start failed." /bin/false;

else
action "Rsync is running." /bin/false
fi
}

fun_stop(){
if [ ! -e $PID_PATH ];then
action "Rsync is not run." /bin/false
else
while true
do
pkill rsync
sleep 2
PORT=`netstat -lntup |grep rsync|wc -l`
[ $PORT -eq 0 ]&&action "Rsync is stop successful." /bin/true && break
done
fi
}

fun_restart(){
if [ ! -e $PID_PATH ];then
action "Rsync is not run." /bin/false
exit 2
else
fun_stop >/dev/null
sleep 2
fun_start >/dev/null
PORT=`netstat -lntup |grep rsync|wc -l`
[ $PORT -eq 2 ]&&action "Rsync is startup successful." /bin/true ||  action "Rsync is restart failed." /bin/false
fi
}

case $1 in
start)
fun_start
;;
stop)
fun_stop
;;
restart)
fun_restart
;;
*)
fun_usage
;;
esac

2)脚本测试

#测试fun_usage函数
[root@jason scripts]# sh rsync.sh  #<==运行脚本,脚本后面没有加参数的提示
Usage:rsync.sh {start|stop|restart}

#测试start
[root@jason scripts]# sh rsync.sh start #<==启动rsync
Rsync is startup successful.                               [  OK  ]
[root@jason scripts]# netstat -lntup |grep 873
tcp        0      0 0.0.0.0:873       0.0.0.0:*       LISTEN      98926/rsync
tcp        0      0 :::873                   :::*             LISTEN      98926/rsync

#测试stop
[root@jason scripts]# sh rsync.sh stop #<==关闭rsync
^[[ARsync is stop successful.                              [  OK  ]
[root@jason scripts]# netstat -lntup |grep 873

#测试restart
[root@jason scripts]# sh rsync.sh restart #<==重启rsync,但是rsync进程未开启,提示报错
Rsync is not run.
b60
[FAILED]

[root@jason scripts]# sh rsync.sh start  #<==先启动rsync
Rsync is startup successful.                               [  OK  ]

[root@jason scripts]# sh rsync.sh restart  #<==然后再测试restart
Rsync is startup successful.                               [  OK  ]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  rsync 启动脚本 shell