如何用shell写一个rsync网络服务启动脚本?超级详细!-创新互联
首先在写脚本之前,你要知道关于rsync的理论知识与实操,才能写好一个ok的脚本。

我们先来捋一捋:
rsync的启动命令:
rsync --daemon
停止命令:
kill rsync进程号
pkill rsync
killall rsync
话不多说,上脚本:
#!/bin/bash
#####################################
# File Name: rsyncd.sh
# Version: V1.0
# Author: wuhan
# Created Time : 2018-10-14 13:19:53
# Description: rsync service script
#####################################
. /etc/init.d/functions
#首先加载/etc/init.d/functions,待会我们需要用里面的基础函数
lockfile="/var/lock/subsys/rsyncd"
#定义一个锁文件的变量
rpfp="/var/run/rsyncd.pid"
#写一个rsync端口ID的变量,方便多次引用,可在此脚本中使用
#写一个函数,名为start
start(){
#函数名
rsync --daemon && >/dev/null
#rsync服务启动命令,启动成功后输出到空
retval=$?
#获取返回值
if [ $retval -eq 0 ]
#如果返回值等于0
then
#那么执行如下操作
action "rsync startup ok" /bin/true
#用action函数输出启动成功的内容并显示ok
touch $lockfile
#在创建一个锁文件
return $retval
#返回使用启动命令后的返回值
else
#否则
action "rsync startup fail" /bin/false
#输出服务启动失败的内为,显示false
return $retval
#也返回启动命令后的返回值,方便排错
fi
#退出
}
#写一个停止命令的函数,名为stop
stop(){
if test -s "$rpfp"
#如果端口ID文件长度不为0,那么为真,执行如下操作
then
rsyncd_pid=`cat $rpfp`
#定义一个端口ID号的变量
if (kill -0 $rsyncd_pid &>/dev/null)
#如果端口ID号存在,且输出到空
then
#执行如下操作
kill $rsyncd_pid
#通过进程号杀掉rsync服务
retval=$?
#获取返回值
if [ $retval -eq 0 ]
#如果返回值等于0,执行如下指令
then
action "rsync stop ok" /bin/true
#输出服务停止成功,显示ok
rm -fr $lockfile
#如果杀掉rsync服务,那就删除锁文件
return "$retval"
#获取返回值
else
#否则执行如下操作
action "rsync stop fail" /bin/false
#输出rsync停止失败,显示false
return $retval
#获得返回值
fi
else
#否则
echo "rsyncd process is not exist."
#提示rsync进程不存在
return 2
#返回值2
fi
else
#否则
echo "${rpfp}is not exist,or rsync does not startup"
#提示端口号不存在或rsync服务没启动
fi
#结束
}
case "$1" in
#因为写了函数,所以我们这里用case结构条件句更适合,定义$1为变量
start)
#匹配到start 执行start函数并获取返回值
start
retval=$?
;;
stop)
#匹配到stop 执行stop函数并获取返回值
stop
retval=$?
;;
restart)
#匹配到restart 先执行stop函数休眠1s在执行start实现restart,并获取返回值
stop
sleep 1
start
retval=$?
;;
*)
#都没有匹配到就输出提示只能执行三个函数中的一个
echo " usage: $0 {start|stop|restart} "
exit 1
esac
#结束
exit $retval
#退出并取得返回值从而进行判断试验:聪明的你可以看到PID进程号在我们的停止开启和重启之后更改,说明脚本ok。[root@node1 ~]# lsof -i:873 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsync 10044 root 4u IPv4 639767 0t0 TCP *:rsync (LISTEN) rsync 10044 root 5u IPv6 639768 0t0 TCP *:rsync (LISTEN) [root@node1 ~]# sh /server/scripts/09/rsyncd3.sh stop rsync stop ok [ OK ] [root@node1 ~]# lsof -i:873 [root@node1 ~]# [root@node1 ~]# sh /server/scripts/09/rsyncd3.sh start rsync startup ok [ OK ] [root@node1 ~]# lsof -i:873 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsync 10212 root 4u IPv4 664268 0t0 TCP *:rsync (LISTEN) rsync 10212 root 5u IPv6 664269 0t0 TCP *:rsync (LISTEN) [root@node1 ~]# sh /server/scripts/09/rsyncd3.sh restart rsync stop ok [ OK ] rsync startup ok [ OK ] [root@node1 ~]# lsof -i:873 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsync 10227 root 4u IPv4 664325 0t0 TCP *:rsync (LISTEN) rsync 10227 root 5u IPv6 664326 0t0 TCP *:rsync (LISTEN)
此脚本直接复制粘贴即可使用,需要/etc/rsyncd.conf配置好pid和锁文件
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享文章:如何用shell写一个rsync网络服务启动脚本?超级详细!-创新互联
URL地址:http://www.jxjierui.cn/article/ddejoh.html


咨询
建站咨询
