rsync随机启动脚本
服务端
#!/bin/sh
# chkconfig:
# description: Saves and restores system entropy pool for \
#create by xiaohu
#2014.06.
#This script is the Rsync service script
. /etc/init.d/functions
case "$1" in
start)
echo "rsync is starting"
/usr/local/rsyncd/bin/rsync --daemon --config=/etc/rsyncd.conf
sleep
myport=`netstat -lnt|grep |wc -l`
if [ $myport -eq ]
then
action "rsync start" /bin/true
else
action "rsync start" /bin/false
fi
;;
stop)
echo "rsync is stoping"
myport=`netstat -lnt|grep |wc -l`
if [ $myport -eq ]
then
killall rsync &>/dev/null
sleep
killall rsync &>/dev/null
sleep
fi
myport=`netstat -lnt|grep |wc -l`
if [ $myport -ne ]
then
action "rsync stop" /bin/true
else
action "rsync stop" /bin/false
fi
;;
restart)
if [ `netstat -lnt|grep |wc -l` -eq ]
then
/usr/local/rsyncd/bin/rsync --daemon --config=/etc/rsyncd.conf
sleep
myport=`netstat -lnt|grep |wc -l`
if [ $myport -eq ]
then
action "rsync restart" /bin/true
else
action "rsync restart" /bin/false
exit
fi
else
killall rsync &>/dev/null
sleep
killall rsync &>/dev/null
sleep
/usr/local/rsyncd/bin/rsync --daemon --config=/etc/rsyncd.conf
sleep
myport=`netstat -lnt|grep |wc -l`
if [ $myport -eq ]
then
action "rsync restart" /bin/true
else
action "rsync restart" /bin/false
fi
fi
;;
status)
myport=`netstat -lnt|grep |wc -l`
if [ $myport -eq ]
then
echo "rsync is running"
else
echo "rsync is stoped"
fi
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
;;
esac
客户端
#! /bin/sh ### BEGIN INIT INFO
# Provides: rsyncd
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Should-Start: $named autofs
# Default-Start:
# Default-Stop:
# Short-Description: fast remote file copy program daemon
# Description: rsync is a program that allows files to be copied to and
# from remote machines in much the same way as rcp.
# This provides rsyncd daemon functionality.
### END INIT INFO set -e # /etc/init.d/rsync: start and stop the rsync daemon DAEMON=/usr/bin/rsync
RSYNC_ENABLE=false
RSYNC_OPTS=''
RSYNC_DEFAULTS_FILE=/etc/default/rsync
RSYNC_CONFIG_FILE=/etc/rsyncd.conf
RSYNC_PID_FILE=/var/run/rsync.pid
RSYNC_NICE_PARM=''
RSYNC_IONICE_PARM='' test -x $DAEMON || exit . /lib/lsb/init-functions if [ -s $RSYNC_DEFAULTS_FILE ]; then
. $RSYNC_DEFAULTS_FILE
case "x$RSYNC_ENABLE" in
xtrue|xfalse) ;;
xinetd) exit
;;
*) log_failure_msg "Value of RSYNC_ENABLE in $RSYNC_DEFAULTS_FILE must be either 'true' or 'false';"
log_failure_msg "not starting rsync daemon."
exit
;;
esac
case "x$RSYNC_NICE" in
x[-]|x1[-]) RSYNC_NICE_PARM="--nicelevel $RSYNC_NICE";;
x) ;;
*) log_warning_msg "Value of RSYNC_NICE in $RSYNC_DEFAULTS_FILE must be a value between 0 and 19 (inclusive);"
log_warning_msg "ignoring RSYNC_NICE now."
;;
esac
case "x$RSYNC_IONICE" in
x-c[]*) RSYNC_IONICE_PARM="$RSYNC_IONICE";;
x) ;;
*) log_warning_msg "Value of RSYNC_IONICE in $RSYNC_DEFAULTS_FILE must be -c1, -c2 or -c3;"
log_warning_msg "ignoring RSYNC_IONICE now."
;;
esac
fi export PATH="${PATH:+$PATH:}/usr/sbin:/sbin" rsync_start() {
if [ ! -s "$RSYNC_CONFIG_FILE" ]; then
log_failure_msg "missing or empty config file $RSYNC_CONFIG_FILE"
log_end_msg
exit
fi
# See ionice()
if [ -n "$RSYNC_IONICE_PARM" ] && [ -x /usr/bin/ionice ] &&
/usr/bin/ionice "$RSYNC_IONICE_PARM" true >/dev/null; then
/usr/bin/ionice "$RSYNC_IONICE_PARM" -p$$ > /dev/null >&
fi
if start-stop-daemon --start --quiet --background \
--pidfile $RSYNC_PID_FILE --make-pidfile \
$RSYNC_NICE_PARM --exec $DAEMON \
-- --no-detach --daemon --config "$RSYNC_CONFIG_FILE" $RSYNC_OPTS
then
rc=
sleep
if ! kill - $(cat $RSYNC_PID_FILE) >/dev/null >&; then
log_failure_msg "rsync daemon failed to start"
rc=
fi
else
rc=
fi
if [ $rc -eq ]; then
log_end_msg
else
log_end_msg
rm -f $RSYNC_PID_FILE
fi
} # rsync_start case "$1" in
start)
if "$RSYNC_ENABLE"; then
log_daemon_msg "Starting rsync daemon" "rsync"
if [ -s $RSYNC_PID_FILE ] && kill - $(cat $RSYNC_PID_FILE) >/dev/null >&; then
log_progress_msg "apparently already running"
log_end_msg
exit
fi
rsync_start
else
if [ -s "$RSYNC_CONFIG_FILE" ]; then
[ "$VERBOSE" != no ] && log_warning_msg "rsync daemon not enabled in $RSYNC_DEFAULTS_FILE, not starting..."
fi
fi
;;
stop)
log_daemon_msg "Stopping rsync daemon" "rsync"
start-stop-daemon --stop --quiet --oknodo --pidfile $RSYNC_PID_FILE
log_end_msg $?
rm -f $RSYNC_PID_FILE
;; reload|force-reload)
log_warning_msg "Reloading rsync daemon: not needed, as the daemon"
log_warning_msg "re-reads the config file whenever a client connects."
;; restart)
set +e
if $RSYNC_ENABLE; then
log_daemon_msg "Restarting rsync daemon" "rsync"
if [ -s $RSYNC_PID_FILE ] && kill - $(cat $RSYNC_PID_FILE) >/dev/null >&; then
start-stop-daemon --stop --quiet --oknodo --pidfile $RSYNC_PID_FILE || true
sleep
else
log_warning_msg "rsync daemon not running, attempting to start."
rm -f $RSYNC_PID_FILE
fi
rsync_start
else
if [ -s "$RSYNC_CONFIG_FILE" ]; then
[ "$VERBOSE" != no ] && log_warning_msg "rsync daemon not enabled in $RSYNC_DEFAULTS_FILE, not starting..."
fi
fi
;; status)
status_of_proc -p $RSYNC_PID_FILE "$DAEMON" rsync
exit $? # notreached due to set -e
;;
*)
echo "Usage: /etc/init.d/rsync {start|stop|reload|force-reload|restart|status}"
exit
esac exit
开机自动启动rsync
1. 扔脚本进去/etc/init.d/
2. 授权
chmod +x rsync
3. 一旦抛出:binsh^M错误就执行编码改写
设置dos统一编码
(请看rsync脚本抛出binsh^M bad interpreter文档)
4. 添加到服务
chkconfig --add ningx
5. 随机启动脚本带动rsync开机启动
chkconfig --level 2345 rsync on
执行脚本时发现如下错误:
/bin/sh^M: bad interpreter: 没有那个文件或目录
错误分析:
因为操作系统是windows,我在windows下编辑的脚本,所以有可能有不可见字符。
脚本文件是DOS格式的, 即每一行的行尾以\n\r来标识, 其ASCII码分别是0x0D, 0x0A.
可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MAC格式的
解决方法:
vim filename
然后用命令
:set ff? #可以看到dos或unix的字样. 如果的确是dos格式的。
然后用
:set ff=unix #把它强制为unix格式的, 然后存盘退出。
再次运行脚本。
rsync随机启动脚本的更多相关文章
- redhat nginx随机启动脚本
开机自动启动nginx 1. 扔脚本进去/etc/init.d/ 2. 授权 chmod +x nginx 3. 一旦抛出:binsh^M错误就执行编码改写 设置do ...
- centos 随机启动脚本编写
先说下问题背景 目前手上开发的产品是springboot微服务的,我们用jenkins来做的部署,部署脚本如下: 1.build脚本 负责从git服务器拉脚本 2.微服务脚本: #!/bin/shap ...
- 15:开发Rsync服务启动脚本案例
[root@m01 ~]# rsn_count="ps -ef|grep 'rsync --d[a]emon'|wc -l" [root@m01 ~]# echo ${rsn_co ...
- 【Windows】Python脚本随机启动
Python脚本的管理在linux系统上市非常方便的,在windows则不是很方面.但是由于之前对于Windows这块的内容不是很了解,其实计划任务也是不错的,但和linux相比起来还是欠缺了那么点. ...
- 开发rsync启动脚本2
使用函数更加规范的开发rsync启动脚本 #!/bin/bash #chkconfig: #description: create by vincen . /etc/init.d/functions ...
- rsync启动脚本
rsync启动脚本 01 #!/bin/bash www.ahlinux.com 02 # 03 # rsyncd This shell script takes care of star ...
- 将MongoDB服务加入随机启动
将MongoDB服务加入随机启动 vi /etc/rc.local 使用vi编辑器打开配置文件,并在其中加入下面一行代码 /usr/local/mongodb/bin/mongod -dbpath=/ ...
- Python操作Excel_随机点菜脚本
背景: 中午快餐,菜单吃了个遍,天天纠结于不知道点啥菜. 想起读书考试时,丢纸团选答案,于是用python写个随机点菜脚本玩玩. 功能: 菜单为Excel,一个Sheet ...
- linux下开机启动脚本的方法
1.准备好要随机启动的程序,例如 /root/test.sh .确保其可执行. 2.在目录 /etc/init.d/ 下编写控制脚本 test . #!/bin/sh ### BEGIN INIT I ...
随机推荐
- 小K的H5之旅-实战篇(一)
一.前言 本K在经过两个星期的html和css学习之后,第一次去尝试完成一个网站主页的制作.在四天之后,本K也终于完成了杰瑞教育主页的html和css部分,至于部分涉及js的部分,因为本K还没有学习过 ...
- CSS小技巧-为内盒子添加margin-top时,会带着父盒子一起下来,如何解决?
1.为父盒子添加一个padding 2.为父盒子添加一个border 3.为父盒子添加一个overflow:hidden
- 初学JVM
最近在读周志明的<深入理解Java虚拟机:JVM高级特性与最佳实践>,从中学到了很多,有些人可能会问为什么我们要学习JVM,他有什么用?在这里我想说一下,并不是这本书是大家都推荐的说有用处 ...
- Dom 简介
HTML DOM 简介 DOM 教程 DOM 节点 HTML DOM 定义了访问和操作 HTML 文档的标准. 您应该具备的基础知识 在您继续学习之前,您需要对以下内容拥有基本的了解: HTML CS ...
- Docker Daemon 参数最佳实践
1. Docker Daemon 配置参数 限制容器之间网络通信 在同一台主机上若不限制容器之间通信,容器之间就会暴露些隐私的信息,所以推荐关闭 docker daemon –icc=false 使用 ...
- Linux 进程,线程 -- (未完)
系统调用 Linux 将系内核的功能接口制作成系统调用, Linux 有 200 多个系统调用, 系统调用是操作系统的最小功能单元. 一个操作系统,以及基于操作系统的应用,都不能实现超越系统调用的功能 ...
- Spingmvc项目注册登录图片验证码(比较灵活的验证码)
最近项目中注册模块要加一个图片验证码功能. 写下来记录下. 1:首先用什么实现,我用的servlet. 后台java代码:RandomValidateCode 类 ,这个类是生成随即验证码和干扰线,可 ...
- 使用 FLASH DATABASE 恢复误删除的用户
场景描述 误 drop 了生产库中的用户 U1 U1 用户下面有 3 张表(T1-T3),表中数据如下所示: SQL> conn u1/u1 Connected. SQL> select ...
- jQuery.merge( first, second )返回: Array
jQuery.merge( first, second )返回: Array描述: 合并两个数组内容到第一个数组.first类型: Array第一个用于合并的数组,其中将会包含合并后的第二个数组的内容 ...
- 【Android Developers Training】 67. 响应触摸事件
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...