#!/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 服务脚本的更多相关文章

  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. UI:数据的解析

    在懒加载的时候要注意事项: 必须使用 self.XX 的样式去开辟空间,不能使用 _XX 的格式去开辟,因为前者是内部的 set 方法,而后者并不走内部的 set 方法. json 文件的创建  xm ...

  2. 关于eclipse部署项目后,在tomcat中的webapps文件夹下没有项目

    转自:https://blog.csdn.net/yang505581644/article/details/78802316 一.发现问题 在eclipse中新建Dynamic Web Projec ...

  3. 【爬坑系列】之vxlan网络实现

    linux 内核从3.7之后就内部集成了vxlan功能,所以可以使用linux内核提供的vxlan功能,经过配置创建vxlan网络. 而从Docker自Docker Engine 1.9之后,就自带o ...

  4. DFS Codeforces Round #306 (Div. 2) B. Preparing Olympiad

    题目传送门 /* DFS: 排序后一个一个出发往后找,找到>r为止,比赛写了return : */ #include <cstdio> #include <iostream&g ...

  5. Class.getResourceAsStream()与ClassLoader.getResourceAsStream()获取资源时的路径说明

    Class.getResourceAsStream(): com.xusweeter.iot.ws.vodafone.config.VodafoneServiceConfig.class.getRes ...

  6. 启动Windows PowerShell ISE

    Windows Server 2008 R2 环境下,启动PoserShell ISE方法: 方法1:在cmd.exe控制台或运行框中,输入 powershell_ise.exe 执行即可. 方法2: ...

  7. Ajax记录

    Ajax简介 在传统的Web应用中,每次请求服务器都会生成新的页面,用户在提交请求后,总是要等待服务器的相应.如果前一个请求没有得到相应,则后一个请求就不能发送.由于这是一种独占式的请求,因此如果服务 ...

  8. Javascript数据结构之栈

    作者原文:http://hawkzz.com/blog/blog/1515054561771 定义 栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶.栈被称为一种先入后出的数据结构 ...

  9. 详解Android Activity生命周期

    转载注明来自:  http://www.cnblogs.com/wujiancheng/ 一.正常情况下Activity的生命周期:  Activity的生命周期大概可以归为三部分 整个的生命周期:o ...

  10. wget安装更新

    #查看当前wget版本信息 wget -V #下载 wget https://ftp.gnu.org/gnu/wget/wget-1.19.tar.gz #解压 tar xvf wget-1.19.t ...