linux 服务程序脚本,linux 服务脚本

1 #!/bin/bash2 #3 # chkconfig: 2345 58 74

4 # description: my_SERVICE_NAME is a my Service5 #6

7 # common function

8 . /etc/init.d/functions9

10 # service bash flag11 IVMS_SERVICE=0

12

13 CORE_DUMP_DIR=/var/my_core14 DAEMON_COREFILE_LIMIT=unlimited15 SVC_SYS_DIR=/etc/init.d16

17 SVC_PROG=my_SERVICE_PROG18 SVC_NAME=my_SERVICE_NAME19 SVC_DIR=my_SERVICE_DIR20 SVC_LOCK_FILE=/var/lock/subsys/$SVC_PROG21 SVC_PID_FILE=/var/run/$SVC_NAME.pid22

23 # install service, $1 service name, $2executable name24 InstallSvc()25 {26 if [ -z "$1" ]; then

27 echo $"service name is needed by myservice."

28 return -1

29 fi

30

31 SVC_NAME=$1

32 SVC_PROG=${2:-$SVC_NAME}33 SVC_DIR=`pwd`34 SVC_SYS_FILE=$SVC_SYS_DIR/$SVC_NAME35

36 if [ ! -f $SVC_DIR/$SVC_PROG ]; then

37 echo $"$SVC_DIR/$SVC_PROG does not exist."

38 return -1

39 fi

40

41 echo $"installing $SVC_NAME service, executable file $SVC_DIR/$SVC_PROG ..."

42

43 # set suid_dumpable on44 if [ -e /proc/sys/kernel/suid_dumpable ]; then

45 echo 1 > /proc/sys/kernel/suid_dumpable46 else

47 echo 1 > /proc/sys/fs/suid_dumpable48 fi

49

50 # create core directory51 if [ -d $CORE_DUMP_DIR ]; then

52 echo $"$CORE_DUMP_DIR/core-%e-%p-%t" > /proc/sys/kernel/core_pattern53 else

54 mkdir$CORE_DUMP_DIR55 echo $"$CORE_DUMP_DIR/core-%e-%p-%t" > /proc/sys/kernel/core_pattern56 fi

57

58 # config sysctl to enable core59 grep "$CORE_DUMP_DIR/core-%e-%p-%t" /etc/sysctl.conf60 if [ $? -ne 0 ]; then

61 echo $"fs.suid_dumpable = 1" >> /etc/sysctl.conf62 echo $"kernel.core_pattern = $CORE_DUMP_DIR/core-%e-%p-%t" >> /etc/sysctl.conf63 fi

64

65 # create service bash66 sed -e "s%my_SERVICE=0%my_SERVICE=1%g" $0 |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_FILE70

71 chmod u+x $SVC_SYS_FILE72 chmod u+x $SVC_DIR/$SVC_PROG73 chkconfig --add $SVC_NAME74

75 echo $"install $SVC_NAME service successfully."

76 return 0

77 }78

79 # uninstall service, $1service name80 UninstallSvc()81 {82 if [ -z "$1" ]; then

83 echo $"service name is needed by myservice."

84 return -1

85 fi

86

87 SVC_NAME=$1

88 SVC_SYS_FILE=$SVC_SYS_DIR/$SVC_NAME89

90 echo $"uninstalling $SVC_NAME service ..."

91

92 # rmservice bash93 if [ -f $SVC_SYS_FILE ]; then

94 chkconfig --del $SVC_NAME95 rm -f $SVC_SYS_FILE96 else

97 warning $"$SVC_NAME service does not exist."

98 fi

99

100 echo $"uninstall $SVC_NAME service successfully."

101 return 0

102 }103

104 # start service105 StartSvc()106 {107 echo $"starting $SVC_NAME service ..."

108

109 # set core unlimited, replaced by DAEMON_COREFILE_LIMIT110 #ulimit -c unlimited111

112 # create lockfile, run program113 touch$SVC_LOCK_FILE114 cd $SVC_DIR115 daemon --pidfile=$SVC_PID_FILE $SVC_DIR/$SVC_PROG -service116 if [ $? -eq 0 ]; then

117 # created by the program118 #pidof $SVC_DIR/$SVC_PROG >$SVC_PID_FILE119 echo $"start $SVC_NAME service successfully."

120 return 0

121 else

122 echo $"start $SVC_NAME service failure."

123 return -1

124 fi

125 }126

127 # get service status128 IsSvcRunning()129 {130 local pid131 __pids_var_run $SVC_NAME $SVC_PID_FILE132 [ -n "$pid" ] && return 0 || return 1

133 }134

135 # stop service136 StopSvc()137 {138 echo $"stopping $SVC_NAME service ..."

139

140 # remove lockfile

141 rm -f $SVC_LOCK_FILE142

143 # wait forexit144 local i RC145 for (( i = 0; i < 10; i++ )); do

146 if IsSvcRunning; then

147 sleep 1

148 else

149 break150 fi

151 done

152

153 if [ $i -eq 10 ] && IsSvcRunning; then

154 killproc -p $SVC_PID_FILE $SVC_NAME155 RC=$?

156 else

157 rm -f $SVC_PID_FILE158 RC=0

159 fi

160

161 if [ $RC -eq 0 ]; then

162 echo $"stop $SVC_NAME service successfully."

163 return 0

164 else

165 echo $"stop $SVC_NAME service failure."

166 return -1

167 fi

168 }169

170 # restart service171 RestartSvc()172 {173 echo $"restarting $SVC_NAME service ..."

174

175 StopSvc176 if [ $? -eq 0 ]; then

177 StartSvc178 if [ $? -eq 0 ]; then

179 echo $"restart $SVC_NAME service successfully."

180 return 0

181 fi

182 fi

183

184 echo $"restart $SVC_NAME service failure."

185 return -1

186 }187

188 RETVAL=0

189

190 if [ $IVMS_SERVICE -eq 0 ]; then

191 # setup192 case $1 in

193 install |i)194 InstallSvc $2 $3

195 RETVAL=$?

196 ;;197 uninstall |u)198 UninstallSvc $2

199 RETVAL=$?

200 ;;201 *)202 echo $"Usage: $0 {i, install NAME [EXEC] | u, uninstall NAME}"

203 ;;204 esac

205 else

206 # service207 case $1 in

208 start |r)209 StartSvc210 RETVAL=$?

211 ;;212 stop |p)213 StopSvc214 RETVAL=$?

215 ;;216 restart |e)217 RestartSvc218 RETVAL=$?

219 ;;220 status |s)221 status -p $SVC_PID_FILE $SVC_NAME222 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值