linux 服务脚本
- #!/bin/bash
- #
- # chkconfig:
- # description: my_SERVICE_NAME is a my Service
- #
- # common function
- . /etc/init.d/functions
- # service bash flag
- IVMS_SERVICE=
- CORE_DUMP_DIR=/var/my_core
- DAEMON_COREFILE_LIMIT=unlimited
- SVC_SYS_DIR=/etc/init.d
- SVC_PROG=my_SERVICE_PROG
- SVC_NAME=my_SERVICE_NAME
- SVC_DIR=my_SERVICE_DIR
- SVC_LOCK_FILE=/var/lock/subsys/$SVC_PROG
- SVC_PID_FILE=/var/run/$SVC_NAME.pid
- # install service, $ service name, $ executable name
- InstallSvc()
- {
- if [ -z "$1" ]; then
- echo $"service name is needed by myservice."
- return -
- fi
- SVC_NAME=$
- SVC_PROG=${:-$SVC_NAME}
- SVC_DIR=`pwd`
- SVC_SYS_FILE=$SVC_SYS_DIR/$SVC_NAME
- if [ ! -f $SVC_DIR/$SVC_PROG ]; then
- echo $"$SVC_DIR/$SVC_PROG does not exist."
- return -
- fi
- echo $"installing $SVC_NAME service, executable file $SVC_DIR/$SVC_PROG ..."
- # set suid_dumpable on
- if [ -e /proc/sys/kernel/suid_dumpable ]; then
- echo > /proc/sys/kernel/suid_dumpable
- else
- echo > /proc/sys/fs/suid_dumpable
- fi
- # create core directory
- if [ -d $CORE_DUMP_DIR ]; then
- echo $"$CORE_DUMP_DIR/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
- else
- mkdir $CORE_DUMP_DIR
- echo $"$CORE_DUMP_DIR/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
- fi
- # config sysctl to enable core
- grep "$CORE_DUMP_DIR/core-%e-%p-%t" /etc/sysctl.conf
- if [ $? -ne ]; then
- echo $"fs.suid_dumpable = 1" >> /etc/sysctl.conf
- echo $"kernel.core_pattern = $CORE_DUMP_DIR/core-%e-%p-%t" >> /etc/sysctl.conf
- fi
- # create service bash
- sed -e "s%my_SERVICE=0%my_SERVICE=1%g" $ | \
- sed -e "s%my_SERVICE_PROG%$SVC_PROG%g" | \
- sed -e "s%my_SERVICE_NAME%$SVC_NAME%g" | \
- sed -e "s%my_SERVICE_DIR%$SVC_DIR%g" > $SVC_SYS_FILE
- chmod u+x $SVC_SYS_FILE
- chmod u+x $SVC_DIR/$SVC_PROG
- chkconfig --add $SVC_NAME
- echo $"install $SVC_NAME service successfully."
- return
- }
- # uninstall service, $ service name
- UninstallSvc()
- {
- if [ -z "$1" ]; then
- echo $"service name is needed by myservice."
- return -
- fi
- SVC_NAME=$
- SVC_SYS_FILE=$SVC_SYS_DIR/$SVC_NAME
- echo $"uninstalling $SVC_NAME service ..."
- # rm service bash
- if [ -f $SVC_SYS_FILE ]; then
- chkconfig --del $SVC_NAME
- rm -f $SVC_SYS_FILE
- else
- warning $"$SVC_NAME service does not exist."
- fi
- echo $"uninstall $SVC_NAME service successfully."
- return
- }
- # start service
- StartSvc()
- {
- echo $"starting $SVC_NAME service ..."
- # set core unlimited, replaced by DAEMON_COREFILE_LIMIT
- #ulimit -c unlimited
- # create lockfile, run program
- touch $SVC_LOCK_FILE
- cd $SVC_DIR
- daemon --pidfile=$SVC_PID_FILE $SVC_DIR/$SVC_PROG -service
- if [ $? -eq ]; then
- # created by the program
- #pidof $SVC_DIR/$SVC_PROG > $SVC_PID_FILE
- echo $"start $SVC_NAME service successfully."
- return
- else
- echo $"start $SVC_NAME service failure."
- return -
- fi
- }
- # get service status
- IsSvcRunning()
- {
- local pid
- __pids_var_run $SVC_NAME $SVC_PID_FILE
- [ -n "$pid" ] && return || return
- }
- # stop service
- StopSvc()
- {
- echo $"stopping $SVC_NAME service ..."
- # remove lockfile
- rm -f $SVC_LOCK_FILE
- # wait for exit
- local i RC
- for (( i = ; i < ; i++ )); do
- if IsSvcRunning; then
- sleep
- else
- break
- fi
- done
- if [ $i -eq ] && IsSvcRunning; then
- killproc -p $SVC_PID_FILE $SVC_NAME
- RC=$?
- else
- rm -f $SVC_PID_FILE
- RC=
- fi
- if [ $RC -eq ]; then
- echo $"stop $SVC_NAME service successfully."
- return
- else
- echo $"stop $SVC_NAME service failure."
- return -
- fi
- }
- # restart service
- RestartSvc()
- {
- echo $"restarting $SVC_NAME service ..."
- StopSvc
- if [ $? -eq ]; then
- StartSvc
- if [ $? -eq ]; then
- echo $"restart $SVC_NAME service successfully."
- return
- fi
- fi
- echo $"restart $SVC_NAME service failure."
- return -
- }
- RETVAL=
- if [ $IVMS_SERVICE -eq ]; then
- # setup
- case $ in
- install | i)
- InstallSvc $ $
- RETVAL=$?
- ;;
- uninstall | u)
- UninstallSvc $
- RETVAL=$?
- ;;
- *)
- echo $"Usage: $0 {i, install NAME [EXEC] | u, uninstall NAME}"
- ;;
- esac
- else
- # service
- case $ in
- start | r)
- StartSvc
- RETVAL=$?
- ;;
- stop | p)
- StopSvc
- RETVAL=$?
- ;;
- restart | e)
- RestartSvc
- RETVAL=$?
- ;;
- status | s)
- status -p $SVC_PID_FILE $SVC_NAME
- RETVAL=$?
- ;;
- status2)
- IsSvcRunning && echo $"$SVC_NAME service is running." || echo $"$SVC_NAME service has been stopped."
- ;;
- *)
- echo $$"Usage: $0 {start|stop|status|restart}"
- ;;
- esac
- fi
- exit $RETVAL
linux 服务脚本的更多相关文章
- 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 ...
- linux服务脚本
#!/bin/sh ARG=$1 case $ARG in start): nohup /path/program & ;; stop): pkill program ;; restart): ...
- 第11章 Linux服务管理
1. 服务分类 (1)Linux的服务 ①Linux中绝大多数的服务都是独立的,直接运行于内存中.当用户访问时,该服务直接响应用户,其好处是服务访问响应速度快.但不利之处是系统中服务越多,消耗的资源越 ...
- 在 CentOS7 上将自定义的 jar 包注册为 linux 服务 service
在 CentOS7 上将自定义的 jar 包注册为 linux 服务 service 1.在 /etc/rc.d/init.d/ 目录下创建一个名字和服务名完全相同的 shell 脚本文件 joyup ...
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- Linux学习笔记(19) Linux服务管理
1. 服务的分类 Linux服务可分为RPM包默认安装的服务和源码包安装的服务.前者可细分为独立的服务(直接作用于内存中)和基于xinetd服务.xinetd本身是独立的服务,其唯一的功能是管理其他服 ...
- [Linux]服务管理:rpm包, 源码包
--------------------------------------------------------------------------------------------------- ...
- linux服务开机启动顺序
今天遇到了一个问题,我们写了一个服务脚本A,该服务需要优先于mysql启动.脚本是从其他地方拷来的模板,前面的默认配置没改,只是实现了自己的功能.写完,chkconfig A on,reboot,启动 ...
随机推荐
- UVa 12716 && UVaLive 6657 GCD XOR (数论)
题意:给定一个 n ,让你求有多少对整数 (a, b) 1 <= b <= a 且 gcd(a, b) = a ^ b. 析:设 c = a ^ b 那么 c 就是 a 的约数,那么根据异 ...
- HDU1072:Nightmare [DFS]
题目链接:Nightmare 题意: 给出一张n*m的图,0代表墙,1代表可以走,2代表起始点,3代表终点,4代表炸弹重置点 问是否能从起点到达终点 分析: 一道很好的DFS题目,炸弹重置点必然最多走 ...
- Qt事件系统之四:定时器事件与随机数
一.定时器事件和随机数 QTimerEvent类用来描述一个定时器事件.对于一个QObject的子类,只需要使用int QObject::startTimer ( int interval)函数来开启 ...
- 排序sort与qsort
首先看sort函数见下表: 函数名 功能描述 sort 对给定区间所有元素进行排序 stable_sort 对给定区间所有元素进行稳定排序 partial_sort 对给定区间所有元素部分排序 par ...
- 判素数+找规律 BestCoder Round #51 (div.2) 1001 Zball in Tina Town
题目传送门 /* 题意: 求(n-1)! mod n 数论:没啥意思,打个表能发现规律,但坑点是4时要特判! */ /***************************************** ...
- ACM牛人博客
ACM牛人博客 kuangbin kuangbin(新) wuyiqi wuyiqi(新) ACM!荣耀之路! 九野的博客 传说中的ACM大牛!!! read more
- 12c debug 转 12C 连接CDB和PDB
来源:David Dai -- Focus on Oracle 连接到CDB 12c debug 和普通实例一样的连接. 指定ORACLE_SID 以后可以使用OS认证,也可以使用密码进行连接. [o ...
- paint之Graphics
在paint方法里面,这个Graphics类就相当于一支画笔.而且就画在那个component里面,比如frame. 看例子代码: import java.awt.*; public class Te ...
- java获取公网ip以及物理地址和代理商
package ipconfig; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr ...
- 自定义button上传按钮
<div class="upload_files"> <input type="file" class="upload_icon&q ...