Quellcode durchsuchen

新增SHELL脚本封装库

niujiuru vor 1 Monat
Ursprung
Commit
365c76e8fe

+ 13 - 0
scripts/modules/daemon

@@ -0,0 +1,13 @@
+#!/bin/sh
+# start up and monitor servers
+# 2013-09-27 10:28 created by niujiuru
+
+start()
+{
+  sh ${CWD}/serverdaemon &
+}
+
+stop()
+{
+  kill_programs serverdaemon
+}

+ 55 - 0
scripts/modules/funcs/functions.sh

@@ -0,0 +1,55 @@
+#!/bin/sh
+# useful functions
+# 2013-09-26 11:00 created by niujiuru
+
+# export envionment variables
+export_env()
+{
+  PATH="/bin:/sbin:/usr/bin:/usr/sbin"
+
+  CWD=$(dirname $0)
+  [ "${CWD%%[^/]*}" != "/" ] && CWD="${PWD}/${CWD}"
+
+  export PATH CWD
+}
+
+# load module by name
+# pass THIS_MODULE to module
+# $1: module name
+load_module()
+{
+  local module="$1"
+  THIS_MODULE="${module}"
+  . ${CWD}/modules/${module}
+}
+
+# load module & call module's method
+# $1: module name
+# $2: method name
+# $...: method params
+call_module()
+{
+  local module="$1"
+  local method="$2"
+  shift 2
+  load_module "$module" && "$method" $*
+  return $?
+}
+
+# return true if program is running
+# $1: program's name
+is_running()
+{
+  ps | grep -w "$1" | grep -v "grep" &>/dev/null
+}
+
+# kill program(s) by name
+# $1: program name
+kill_programs()
+{
+  local sig=${2:-15}
+  for p in $(ps | grep -w "$1" | grep -v "grep" | awk '{print $1}')
+  do
+    kill -$sig $p
+  done
+}

+ 16 - 0
scripts/modules/rtu_linux_modules

@@ -0,0 +1,16 @@
+#!/bin/sh
+# start/stop an application
+# 2014-07-29 09:45 created by niujiuru
+
+APP_NAME="rtu_linux_modules.out"
+
+start()
+{
+  chmod a+x ${APPBINS_PATH}/${APP_NAME}
+  ${APPBINS_PATH}/${APP_NAME} &
+}
+
+stop()
+{
+  kill_programs ${APP_NAME} 9
+}

+ 20 - 0
scripts/serverdaemon

@@ -0,0 +1,20 @@
+#!/bin/sh
+# a daemon, start and monitor servers
+# 2013-09-27 09:28 created by niujiuru
+
+. $(dirname $0)/modules/funcs/functions.sh
+export_env
+
+INTERVAL=60
+APP_NAME="rtu_linux_modules.out"
+
+while true
+do
+  if ! is_running "$APP_NAME"
+  then
+    echo "starting $APP_NAME: ${APPBINS_PATH}/$APP_NAME &"
+    rm -rf ${APPRUNS_PATH}/${APP_NAME}.lock
+    ${APPBINS_PATH}/$APP_NAME &
+  fi
+  sleep $INTERVAL
+done

+ 7 - 0
scripts/set_env

@@ -0,0 +1,7 @@
+export APPHOME_PATH="/home/root/rtu_linux_modules"
+export APPBINS_PATH="${APPHOME_PATH}"
+export APPLIBS_PATH="${APPHOME_PATH}/lib"
+export APPRUNS_PATH="${APPHOME_PATH}/status"
+
+# 导出运行时库
+export LD_LIBRARY_PATH=${APPLIBS_PATH}

+ 18 - 0
scripts/start

@@ -0,0 +1,18 @@
+#!/bin/sh
+# script that runs on system startup
+# 2013-09-26 09:30 created by niujiuru
+
+. $(dirname $0)/set_env
+. $(dirname $0)/modules/funcs/functions.sh
+export_env
+
+ORDER="
+rtu_linux_modules
+daemon
+"
+
+for m in ${ORDER}
+do
+  echo ":: starting $m"
+  call_module "$m" start
+done

+ 18 - 0
scripts/stop

@@ -0,0 +1,18 @@
+#!/bin/sh
+# script that runs on system stop
+# 2013-09-26 09:50 created by niujiuru
+
+. $(dirname $0)/modules/funcs/functions.sh
+export_env
+
+ORDER="
+daemon
+rtu_linux_modules
+"
+
+for m in ${ORDER}
+do
+  echo ":: stopping $m"
+  call_module "$m" stop
+  rm -rf ${APPRUNS_PATH}/*.lock
+done