140 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
#!/bin/bash
 | 
						|
#
 | 
						|
# osync-srv Two way directory sync daemon
 | 
						|
#
 | 
						|
# chkconfig: - 90 99
 | 
						|
# description: monitors a local directory and syncs to a local or remote \
 | 
						|
#              directory on file changes
 | 
						|
# processname: /usr/local/bin/osync.sh
 | 
						|
# config: /etc/osync/*.conf
 | 
						|
# pidfile: /var/run/osync
 | 
						|
 | 
						|
### BEGIN INIT INFO
 | 
						|
# Provides:		osync-srv
 | 
						|
# Required-Start:	$local_fs $time
 | 
						|
# Required-Stop:	$local_fs $time
 | 
						|
# Default-Start:	2 3 4 5
 | 
						|
# Default-Stop:		0 1 6
 | 
						|
# Short-Description:	osync daemon
 | 
						|
# Description:		Two way directory sync daemon
 | 
						|
### END INIT INFO
 | 
						|
 | 
						|
prog=osync
 | 
						|
progexec=osync.sh
 | 
						|
progpath=/usr/local/bin
 | 
						|
confdir=/etc/osync
 | 
						|
pidfile=/var/run/$prog
 | 
						|
SCRIPT_BUILD=2015092701
 | 
						|
 | 
						|
if [ ! -f $progpath/$progexec ] && [ ! -f $progexec ]; then
 | 
						|
	echo "Cannot find $prog executable in $progpath nor in local path."
 | 
						|
	exit 1
 | 
						|
fi
 | 
						|
 | 
						|
if [ ! -w $(dirname $pidfile) ]; then
 | 
						|
	pidfile=./$prog
 | 
						|
fi
 | 
						|
 | 
						|
start() {
 | 
						|
	if [ ! -f $confdir/*.conf ]; then
 | 
						|
		echo "Cannot find any configuration files in $confdir."
 | 
						|
		exit 1
 | 
						|
	fi
 | 
						|
 | 
						|
	errno=0
 | 
						|
 | 
						|
	for cfgfile in $confdir/*.conf
 | 
						|
	do
 | 
						|
		if [ -f $progpath/$progexec ]; then
 | 
						|
			$progpath/$progexec $cfgfile --on-changes > /dev/null 2>&1 &
 | 
						|
		else
 | 
						|
			echo "Cannot find $prog executable in $progpath"
 | 
						|
			exit 1
 | 
						|
		fi
 | 
						|
 | 
						|
		pid=$!
 | 
						|
		retval=$?
 | 
						|
 | 
						|
		if [ $? == 0 ]; then
 | 
						|
			echo $pid > "$pidfile-$(basename $cfgfile)"
 | 
						|
			echo "$prog successfully started for configuration file $cfgfile"
 | 
						|
		else
 | 
						|
			echo "Cannot start $prog for configuration file $cfgfile"
 | 
						|
			$errno = 1
 | 
						|
		fi
 | 
						|
	done
 | 
						|
 | 
						|
	exit $errno
 | 
						|
}
 | 
						|
 | 
						|
stop() {
 | 
						|
	if [ ! -f $pidfile-* ]; then
 | 
						|
		echo "No running $prog instances found."
 | 
						|
		exit 1
 | 
						|
	fi
 | 
						|
 | 
						|
	for pfile in $pidfile-*
 | 
						|
	do
 | 
						|
		if ps -p$(cat $pfile) > /dev/null 2>&1
 | 
						|
		then
 | 
						|
			kill -TERM $(cat $pfile)
 | 
						|
			if [ $? == 0 ]; then
 | 
						|
				rm -f $pfile
 | 
						|
				echo "$prog instance $(basename $pfile) stopped."
 | 
						|
			else
 | 
						|
				echo "Cannot stop $prog instance $(basename $pfile)"
 | 
						|
			fi
 | 
						|
		else
 | 
						|
			rm -f $pfile
 | 
						|
			echo "$prog instance $pfile (pid $(cat $pfile)) is dead but pidfile exists."
 | 
						|
		fi
 | 
						|
	done
 | 
						|
}
 | 
						|
 | 
						|
status() {
 | 
						|
	if [ ! -f $pidfile-* ]; then
 | 
						|
		echo "Cannot find any running $prog instance."
 | 
						|
		exit 1
 | 
						|
	fi
 | 
						|
 | 
						|
	errno=0
 | 
						|
 | 
						|
	for pfile in $pidfile-*
 | 
						|
	do
 | 
						|
		if ps -p$(cat $pfile) > /dev/null 2>&1
 | 
						|
		then
 | 
						|
			echo "$prog instance $(basename $pfile) is running (pid $(cat $pfile))"
 | 
						|
		else
 | 
						|
			echo "$prog instance $pfile (pid $(cat $pfile)) is dead but pidfile exists."
 | 
						|
			$errno=1
 | 
						|
		fi
 | 
						|
	done
 | 
						|
 | 
						|
	exit $errno
 | 
						|
}
 | 
						|
 | 
						|
case "$1" in
 | 
						|
	start)
 | 
						|
	start
 | 
						|
	;;
 | 
						|
	stop)
 | 
						|
	stop
 | 
						|
	;;
 | 
						|
	restart)
 | 
						|
	stop
 | 
						|
	start
 | 
						|
	;;
 | 
						|
	status)
 | 
						|
	status
 | 
						|
	;;
 | 
						|
	condrestart|try-restart)
 | 
						|
	status || exit 0
 | 
						|
	restart
 | 
						|
	;;
 | 
						|
	*)
 | 
						|
	echo "Usage: $0 {start|stop|restart|status}"
 | 
						|
	;;
 | 
						|
esac
 | 
						|
 | 
						|
exit 0
 |