���ѧۧݧ�ӧ�� �ާ֧ߧ֧էا֧� - ���֧էѧܧ�ڧ��ӧѧ�� - /etc/init.d/vvagent
���ѧ٧ѧ�
#!/bin/bash ${TraceF} # Init file for Backup Agent ### BEGIN INIT INFO # Provides: VVAgent # Required-Start: $network # Required-Stop: $network # Default-Start: 2 3 5 # Default-Stop: 0 1 4 6 # Description: Backup Agent ### END INIT INFO _platform_init() { #{{{1 . /lib/lsb/init-functions LD_LIBRARY_PATH="${agentDir}:${LD_LIBRARY_PATH}" export LD_LIBRARY_PATH } _start_vvagent() { #{{{1 /sbin/start-stop-daemon --start --quiet --pidfile "${vvagentpid}" --startas "${vvagent}" -- -d -p "${agentDir}" >> "${vvlog}" 2>&1 } _start_buagent() { #{{{1 [ -z "${BUAGENT_CMDLINE}" ] && BUAGENT_CMDLINE="--path ${agentDir}" /sbin/start-stop-daemon --start --quiet --pidfile "${buagentpid}" --startas "${buagent}" -- ${BUAGENT_CMDLINE} >> "${bulog}" 2>&1 } _running_pid() { #{{{1 pidofproc ${1} } stop_agent() { #{{{1 base=$(basename "$1") sig=$(echo ${2:-} | sed -e 's/^-\(.*\)/\1/') sig=$(echo ${sig} | sed -e 's/^SIG\(.*\)/\1/') sig=${sig:-TERM} /sbin/start-stop-daemon --stop --signal $sig --quiet --retry 10 --name $base if ! [ -z "$(ps -e | grep $base)" ] ; then echo "The $base process did not stop after 10 attempts." echo "Please stop it manually" exit 1 fi } svc_start() { #{{{1 log_daemon_msg "Starting Backup Agent" log_progress_msg "VVAgent"; _start_vvagent RET=${?} if [ ${RET} -eq 0 -a ${has_buagent} -eq 1 ]; then log_progress_msg "BUAgent"; _start_buagent RET=${?} fi log_end_msg ${RET} } svc_stop() { #{{{1 log_daemon_msg "Stopping Backup Agent" log_progress_msg "VVAgent"; stop_agent ${vvagent} RET=${?} if [ ${has_buagent} -eq 1 ]; then log_progress_msg "BUAgent" && stop_agent ${buagent} RET2=${?} fi log_end_msg `expr ${RET} + ${RET2:=0}` } _usage() { #{{{1 _display_message "Usage: $0 { start | stop | restart | force-reload | status }" } _platform_action() { #{{{1 case "${1}" in #{{{ force-reload) svc_restart ;; *) return 1 ;; esac #}}} return 0 } #}}}1 # vim: ft=sh foldmethod=marker # Initialization {{{1 _type() { #{{{2 type ${1} 1> /dev/null 2> /dev/null } _init_this_script() { #{{{2 agentDir="/opt/BUAgent" runDir=/var/run/buagent vvlog="${agentDir}/vvlog" bulog="${agentDir}/bulog" vvagent="${agentDir}/VVAgent" buagent="${agentDir}/buagent" vvagentpid=${runDir}/VVAgent.pid buagentpid=${runDir}/BUAgent.pid quiet=0 [ ! -z "${2}" -a "${2}" = "quiet" ] && quiet=1 has_buagent=0 [ -f "${agentDir}/buagent.cfg" ] && has_buagent=1 [ ! -z "${BUAGENT_CMDLINE}" ] && has_buagent=1 [ ! -x "${buagent}" ] && has_buagent=0 _platform_init [ -d ${runDir} ] || mkdir -p ${runDir} RETVAL=0 } # Messages {{{1 _type _usage || _usage() { #{{{2 _display_message "Usage: ${0} { start | stop | restart | status }" } _display_partial() { #{{{2 [ ${quiet} -eq 0 ] && printf "${@}" } _display_message() { #{{{2 [ ${quiet} -eq 0 ] && echo ${*} } _agent_start_failed() { #{{{2 _display_message "${1} failed to start." } # Process Management {{{1 _type _test_running || _test_running() { #{{{2 # Daemons return 1 if not running, and 0 if running case `basename "${1}"` in #{{{ VVAgent) "${vvagent}" -S > /dev/null 2>&1 RC=${?} ;; buagent) "${buagent}" --status > /dev/null 2>&1 RC=${?} ;; *) RC=1 ;; esac #}}} echo ${RC} return ${RC} } _type _running_pid || _running_pid() { #{{{2 running=`_test_running "${1}"` result=${?} case `basename "${1}"` in #{{{ VVAgent) [ -f "${vvagentpid}" ] && cat "${vvagentpid}" || echo 0 ;; buagent) [ -f "${buagentpid}" ] && cat "${buagentpid}" || echo 0 ;; *) echo 0 ;; esac #}}} return ${result} } # VVAgent Management {{{1 _type _vvagent_cmd || _vvagent_cmd() { #{{{2 "${vvagent}" "${@}" >> "${vvlog}" 2>> "${vvlog}" } _type _start_vvagent || _start_vvagent() { #{{{2 _vvagent_cmd -d -p "${agentDir}" } _type _stop_vvagent || _stop_vvagent() { #{{{2 _vvagent_cmd -s } _type _kill_vvagent || _kill_vvagent() { #{{{2 _vvagent_cmd -k } # BUAgent Management {{{1 _type _buagent_cmd || _buagent_cmd() { #{{{2 "${buagent}" "${@}" >> "${bulog}" 2>> "${bulog}" } _type _start_buagent || _start_buagent() { #{{{2 [ -z "${BUAGENT_CMDLINE}" ] && BUAGENT_CMDLINE="--path \"${agentDir}\"" _buagent_cmd "${BUAGENT_CMDLINE}" } _type _stop_buagent || _stop_buagent() { #{{{2 _buagent_cmd --stop } _type _kill_buagent || _kill_buagent() { #{{{2 _buagent_cmd --kill } # Daemon Management Wrappers {{{1 _type _agent_daemon_is_running || _agent_daemon_is_running() { #{{{2 prog=`basename "${2}"` if [ "${1}" -eq 0 ]; then _display_message "${prog} is running (PID ${3})." return 0 else _display_message "${prog} is not running." return 1 fi } _type _status_agent || _status_agent() { #{{{2 executable="${1}" pid=`_running_pid "${executable}"` agent_is_running=${?} _agent_daemon_is_running ${agent_is_running} "${executable}" ${pid} RETVAL=`expr ${RETVAL} + ${?}` } _type _start_agent_daemon || _start_agent_daemon() { #{{{2 running=`_test_running ${1}` if [ ${running} -eq 0 ]; then #{{{ pid=`_running_pid "${1}"` _agent_daemon_is_running ${?} "${1}" ${pid} return `expr ${RETVAL} + ${?}` fi #}}} _display_partial "Starting ${1}... " save_cwd=`pwd` cd "${agentDir}" case `basename "${1}"` in #{{{ VVAgent) _start_vvagent RETVAL=${?} ;; buagent) _start_buagent RETVAL=${?} ;; *) RETVAL=999 ;; esac #}}} cd "${save_cwd}" [ ${RETVAL} -ne 0 ] && _agent_start_failed ${1} sleep 1 running=`_test_running "${1}"` # running=1 if agent is not running [ ${running} -ne 0 ] && _agent_start_failed ${1} || _display_message started. } _type _stop_agent_daemon || _stop_agent_daemon() { #{{{2 running=`_test_running "${1}"` if [ ${running} -eq 1 ]; then #{{{ pid=`_running_pid "${1}"` _agent_daemon_is_running ${?} "${1}" ${pid} return `expr ${RETVAL} + ${?}` fi #}}} _display_partial "Stopping ${1}... " save_cwd=`pwd` cd "${agentDir}" case `basename ${1}` in #{{{ VVAgent) _stop_vvagent RETVAL=${?} ;; buagent) _stop_buagent RETVAL=${?} ;; *) RETVAL=999 ;; esac #}}} cd "${save_cwd}" # It can take up to 10 seconds for an Agent daemon to shutdown retry=5 running=`_test_running "${1}"` while [ ${retry} -gt 0 -a ${running} -eq 0 ]; do #{{{ sleep 2 retry=`expr ${retry} - 1` running=`_test_running "${1}"` done #}}} # Make sure the agent died and kill it if it is taking too long running=`_test_running "${1}"` if [ ${running} -eq 0 ]; then case `basename ${1}` in #{{{ VVAgent) _kill_vvagent RETVAL=${?} ;; buagent) _kill_buagent RETVAL=${?} ;; *) RETVAL=999 ;; esac #}}} fi _display_message stopped. } _type _kill_agent_daemon || _kill_agent_daemon() { #{{{2 running=`_test_running "${1}"` if [ ${running} -eq 1 ]; then #{{{ pid=`_running_pid "${1}"` _agent_daemon_is_running ${?} "${1}" ${pid} return `expr ${RETVAL} + ${?}` fi #}}} _display_partial "Killing ${1}... " save_cwd=`pwd` cd "${agentDir}" case `basename ${1}` in #{{{ VVAgent) _kill_vvagent RETVAL=${?} ;; buagent) _kill_buagent RETVAL=${?} ;; *) RETVAL=999 ;; esac #}}} cd "${save_cwd}" _display_message killed. } _type _start_agent || _start_agent() { #{{{2 _start_agent_daemon VVAgent "${vvlog}" [ ${has_buagent} -eq 1 ] && _start_agent_daemon buagent "${bulog}" } _type _stop_agent || _stop_agent() { #{{{2 _stop_agent_daemon VVAgent [ ${has_buagent} -eq 1 ] && _stop_agent_daemon buagent } _type _kill_agent || _kill_agent() { #{{{2 _kill_agent_daemon VVAgent [ ${has_buagent} -eq 1 ] && _kill_agent_daemon buagent } # Default Implementations #{{{1 _type _platform_init || _platform_init() { #{{{2 LD_LIBRARY_PATH="${agentDir}:${LD_LIBRARY_PATH}" export LD_LIBRARY_PATH } _type _platform_exit || _platform_exit() { #{{{2 exit "${@}" } _type _platform_action || _platform_action() { #{{{2 # No platform actions by default. Return 0 if the platform action completes # normally. return 1 } _type svc_start || svc_start() { #{{{2 _start_agent } _type svc_stop || svc_stop() { #{{{2 _stop_agent } _type svc_kill || svc_kill() { #{{{2 _kill_agent } _type svc_status || svc_status() { #{{{2 _status_agent "${vvagent}" if [ ${has_buagent} -eq 1 ]; then _status_agent "${buagent}" fi } _type svc_restart || svc_restart() { #{{{2 svc_stop sleep 3 svc_start } # Execution {{{1 _delegate_action() { #{{{2 _platform_action ${1} [ ${?} -eq 0 ] && return case "${1}" in #{{{ start) svc_start ;; stop) svc_stop ;; kill) svc_kill ;; restart) svc_restart ;; status) svc_status ;; *-all) has_buagent=1 case "${1}" in #{{{ start*) svc_start ;; stop*) svc_stop ;; kill*) svc_kill ;; restart*) svc_restart ;; status*) svc_status ;; *) _usage exit 1 ;; esac #}}} ;; *) _usage exit 1 ;; esac #}}} _platform_exit ${RETVAL} } _init_this_script "${@}" _delegate_action "${@}" # vim:foldmethod=marker
| ver. 1.4 |
Github
|
.
| PHP 8.3.33 | ���֧ߧ֧�ѧ�ڧ� ����ѧߧڧ��: 0 |
proxy
|
phpinfo
|
���ѧ����ۧܧ�