1. #!/bin/bash
  2. #
  3. # chkconfig:
  4. # description: my_SERVICE_NAME is a my Service
  5. #
  6.  
  7. # common function
  8. . /etc/init.d/functions
  9.  
  10. # service bash flag
  11. IVMS_SERVICE=
  12.  
  13. CORE_DUMP_DIR=/var/my_core
  14. DAEMON_COREFILE_LIMIT=unlimited
  15. SVC_SYS_DIR=/etc/init.d
  16.  
  17. SVC_PROG=my_SERVICE_PROG
  18. SVC_NAME=my_SERVICE_NAME
  19. SVC_DIR=my_SERVICE_DIR
  20. SVC_LOCK_FILE=/var/lock/subsys/$SVC_PROG
  21. SVC_PID_FILE=/var/run/$SVC_NAME.pid
  22.  
  23. # install service, $ service name, $ executable name
  24. InstallSvc()
  25. {
  26. if [ -z "$1" ]; then
  27. echo $"service name is needed by myservice."
  28. return -
  29. fi
  30.  
  31. SVC_NAME=$
  32. SVC_PROG=${:-$SVC_NAME}
  33. SVC_DIR=`pwd`
  34. SVC_SYS_FILE=$SVC_SYS_DIR/$SVC_NAME
  35.  
  36. if [ ! -f $SVC_DIR/$SVC_PROG ]; then
  37. echo $"$SVC_DIR/$SVC_PROG does not exist."
  38. return -
  39. fi
  40.  
  41. echo $"installing $SVC_NAME service, executable file $SVC_DIR/$SVC_PROG ..."
  42.  
  43. # set suid_dumpable on
  44. if [ -e /proc/sys/kernel/suid_dumpable ]; then
  45. echo > /proc/sys/kernel/suid_dumpable
  46. else
  47. echo > /proc/sys/fs/suid_dumpable
  48. fi
  49.  
  50. # create core directory
  51. if [ -d $CORE_DUMP_DIR ]; then
  52. echo $"$CORE_DUMP_DIR/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
  53. else
  54. mkdir $CORE_DUMP_DIR
  55. echo $"$CORE_DUMP_DIR/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
  56. fi
  57.  
  58. # config sysctl to enable core
  59. grep "$CORE_DUMP_DIR/core-%e-%p-%t" /etc/sysctl.conf
  60. if [ $? -ne ]; then
  61. echo $"fs.suid_dumpable = 1" >> /etc/sysctl.conf
  62. echo $"kernel.core_pattern = $CORE_DUMP_DIR/core-%e-%p-%t" >> /etc/sysctl.conf
  63. fi
  64.  
  65. # create service bash
  66. sed -e "s%my_SERVICE=0%my_SERVICE=1%g" $ | \
  67. sed -e "s%my_SERVICE_PROG%$SVC_PROG%g" | \
  68. sed -e "s%my_SERVICE_NAME%$SVC_NAME%g" | \
  69. sed -e "s%my_SERVICE_DIR%$SVC_DIR%g" > $SVC_SYS_FILE
  70.  
  71. chmod u+x $SVC_SYS_FILE
  72. chmod u+x $SVC_DIR/$SVC_PROG
  73. chkconfig --add $SVC_NAME
  74.  
  75. echo $"install $SVC_NAME service successfully."
  76. return
  77. }
  78.  
  79. # uninstall service, $ service name
  80. UninstallSvc()
  81. {
  82. if [ -z "$1" ]; then
  83. echo $"service name is needed by myservice."
  84. return -
  85. fi
  86.  
  87. SVC_NAME=$
  88. SVC_SYS_FILE=$SVC_SYS_DIR/$SVC_NAME
  89.  
  90. echo $"uninstalling $SVC_NAME service ..."
  91.  
  92. # rm service bash
  93. if [ -f $SVC_SYS_FILE ]; then
  94. chkconfig --del $SVC_NAME
  95. rm -f $SVC_SYS_FILE
  96. else
  97. warning $"$SVC_NAME service does not exist."
  98. fi
  99.  
  100. echo $"uninstall $SVC_NAME service successfully."
  101. return
  102. }
  103.  
  104. # start service
  105. StartSvc()
  106. {
  107. echo $"starting $SVC_NAME service ..."
  108.  
  109. # set core unlimited, replaced by DAEMON_COREFILE_LIMIT
  110. #ulimit -c unlimited
  111.  
  112. # create lockfile, run program
  113. touch $SVC_LOCK_FILE
  114. cd $SVC_DIR
  115. daemon --pidfile=$SVC_PID_FILE $SVC_DIR/$SVC_PROG -service
  116. if [ $? -eq ]; then
  117. # created by the program
  118. #pidof $SVC_DIR/$SVC_PROG > $SVC_PID_FILE
  119. echo $"start $SVC_NAME service successfully."
  120. return
  121. else
  122. echo $"start $SVC_NAME service failure."
  123. return -
  124. fi
  125. }
  126.  
  127. # get service status
  128. IsSvcRunning()
  129. {
  130. local pid
  131. __pids_var_run $SVC_NAME $SVC_PID_FILE
  132. [ -n "$pid" ] && return || return
  133. }
  134.  
  135. # stop service
  136. StopSvc()
  137. {
  138. echo $"stopping $SVC_NAME service ..."
  139.  
  140. # remove lockfile
  141. rm -f $SVC_LOCK_FILE
  142.  
  143. # wait for exit
  144. local i RC
  145. for (( i = ; i < ; i++ )); do
  146. if IsSvcRunning; then
  147. sleep
  148. else
  149. break
  150. fi
  151. done
  152.  
  153. if [ $i -eq ] && IsSvcRunning; then
  154. killproc -p $SVC_PID_FILE $SVC_NAME
  155. RC=$?
  156. else
  157. rm -f $SVC_PID_FILE
  158. RC=
  159. fi
  160.  
  161. if [ $RC -eq ]; then
  162. echo $"stop $SVC_NAME service successfully."
  163. return
  164. else
  165. echo $"stop $SVC_NAME service failure."
  166. return -
  167. fi
  168. }
  169.  
  170. # restart service
  171. RestartSvc()
  172. {
  173. echo $"restarting $SVC_NAME service ..."
  174.  
  175. StopSvc
  176. if [ $? -eq ]; then
  177. StartSvc
  178. if [ $? -eq ]; then
  179. echo $"restart $SVC_NAME service successfully."
  180. return
  181. fi
  182. fi
  183.  
  184. echo $"restart $SVC_NAME service failure."
  185. return -
  186. }
  187.  
  188. RETVAL=
  189.  
  190. if [ $IVMS_SERVICE -eq ]; then
  191. # setup
  192. case $ in
  193. install | i)
  194. InstallSvc $ $
  195. RETVAL=$?
  196. ;;
  197. uninstall | u)
  198. UninstallSvc $
  199. RETVAL=$?
  200. ;;
  201. *)
  202. echo $"Usage: $0 {i, install NAME [EXEC] | u, uninstall NAME}"
  203. ;;
  204. esac
  205. else
  206. # service
  207. case $ in
  208. start | r)
  209. StartSvc
  210. RETVAL=$?
  211. ;;
  212. stop | p)
  213. StopSvc
  214. RETVAL=$?
  215. ;;
  216. restart | e)
  217. RestartSvc
  218. RETVAL=$?
  219. ;;
  220. status | s)
  221. status -p $SVC_PID_FILE $SVC_NAME
  222. RETVAL=$?
  223. ;;
  224. status2)
  225. IsSvcRunning && echo $"$SVC_NAME service is running." || echo $"$SVC_NAME service has been stopped."
  226. ;;
  227. *)
  228. echo $$"Usage: $0 {start|stop|status|restart}"
  229. ;;
  230. esac
  231. fi
  232.  
  233. exit $RETVAL

linux 服务脚本的更多相关文章

  1. linux服务脚本编写

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  2. linux服务脚本

    #!/bin/sh ARG=$1 case $ARG in start): nohup /path/program & ;; stop): pkill program ;; restart): ...

  3. 第11章 Linux服务管理

    1. 服务分类 (1)Linux的服务 ①Linux中绝大多数的服务都是独立的,直接运行于内存中.当用户访问时,该服务直接响应用户,其好处是服务访问响应速度快.但不利之处是系统中服务越多,消耗的资源越 ...

  4. 在 CentOS7 上将自定义的 jar 包注册为 linux 服务 service

    在 CentOS7 上将自定义的 jar 包注册为 linux 服务 service 1.在 /etc/rc.d/init.d/ 目录下创建一个名字和服务名完全相同的 shell 脚本文件 joyup ...

  5. Linux shell脚本编程(三)

    Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

  6. Linux shell脚本编程(一)

    Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...

  7. Linux学习笔记(19) Linux服务管理

    1. 服务的分类 Linux服务可分为RPM包默认安装的服务和源码包安装的服务.前者可细分为独立的服务(直接作用于内存中)和基于xinetd服务.xinetd本身是独立的服务,其唯一的功能是管理其他服 ...

  8. [Linux]服务管理:rpm包, 源码包

    --------------------------------------------------------------------------------------------------- ...

  9. linux服务开机启动顺序

    今天遇到了一个问题,我们写了一个服务脚本A,该服务需要优先于mysql启动.脚本是从其他地方拷来的模板,前面的默认配置没改,只是实现了自己的功能.写完,chkconfig A on,reboot,启动 ...

随机推荐

  1. UVa 12716 && UVaLive 6657 GCD XOR (数论)

    题意:给定一个 n ,让你求有多少对整数 (a, b) 1 <= b <= a 且 gcd(a, b) = a ^ b. 析:设 c = a ^ b 那么 c 就是 a 的约数,那么根据异 ...

  2. HDU1072:Nightmare [DFS]

    题目链接:Nightmare 题意: 给出一张n*m的图,0代表墙,1代表可以走,2代表起始点,3代表终点,4代表炸弹重置点 问是否能从起点到达终点 分析: 一道很好的DFS题目,炸弹重置点必然最多走 ...

  3. Qt事件系统之四:定时器事件与随机数

    一.定时器事件和随机数 QTimerEvent类用来描述一个定时器事件.对于一个QObject的子类,只需要使用int QObject::startTimer ( int interval)函数来开启 ...

  4. 排序sort与qsort

    首先看sort函数见下表: 函数名 功能描述 sort 对给定区间所有元素进行排序 stable_sort 对给定区间所有元素进行稳定排序 partial_sort 对给定区间所有元素部分排序 par ...

  5. 判素数+找规律 BestCoder Round #51 (div.2) 1001 Zball in Tina Town

    题目传送门 /* 题意: 求(n-1)! mod n 数论:没啥意思,打个表能发现规律,但坑点是4时要特判! */ /***************************************** ...

  6. ACM牛人博客

    ACM牛人博客 kuangbin kuangbin(新) wuyiqi wuyiqi(新) ACM!荣耀之路! 九野的博客 传说中的ACM大牛!!! read more

  7. 12c debug 转 12C 连接CDB和PDB

    来源:David Dai -- Focus on Oracle 连接到CDB 12c debug 和普通实例一样的连接. 指定ORACLE_SID 以后可以使用OS认证,也可以使用密码进行连接. [o ...

  8. paint之Graphics

    在paint方法里面,这个Graphics类就相当于一支画笔.而且就画在那个component里面,比如frame. 看例子代码: import java.awt.*; public class Te ...

  9. java获取公网ip以及物理地址和代理商

    package ipconfig; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr ...

  10. 自定义button上传按钮

    <div class="upload_files"> <input type="file" class="upload_icon&q ...