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,启动 ...
随机推荐
- 【WIP】Ruby JSON
创建: 2018/03/22 以后有空补上 注: JSON.generate 参数只能是Obejct或者Array, 不可以是Hash https://docs.ruby-lang.org/ja/la ...
- Codeforces Round #259 (Div. 1)A(公式)
传送门 题意 给出m个面的骰子扔n次,取最大值,求期望 分析 暴力算会有重复,而且复杂度不对. 考虑m个面扔n次得到m的概率,发现只要减去(m-1)个面扔n次得到m-1的概率即可,给出example说 ...
- bzoj 2784: [JLOI2012]时间流逝【树形期望dp】
来自lyd课件 发现s和last(s),next(s)成树结构,然后把式子化简成kx+b的形式,做树形dp即可 #include<iostream> #include<cstdio& ...
- bzoj 4247: 挂饰【dp】
bzoj上访问负下标会跑到奇怪的地方-- 其实可以滚动数组优化,但是我看能过就懒得改了 设f[i][j]为已经算了前i个挂饰,当前有j个空的钩子,转移就是f[i][j]=max(f[i-1][j],f ...
- bzoj 1565 [NOI2009]植物大战僵尸【tarjan+最大权闭合子图】
一上来以为是裸的最大权闭合子图,上来就dinic -然后没过样例.不得不说样例还是非常良心的给了一个强连通分量,要不然就WA的生活不能自理了 然后注意到有一种特殊情况:每个植物向他保护的植物连边(包括 ...
- bzoj 3930: [CQOI2015]选数【快速幂+容斥】
参考:https://www.cnblogs.com/iwtwiioi/p/4986316.html 注意区间长度为1e5级别. 则假设n个数不全相同,那么他们的gcd小于最大数-最小数,证明:则gc ...
- bzoj 2006: [NOI2010]超级钢琴【st表+堆】
设计一个五元组(i,l,r,p,v),表示在以i为左端点,右端点落在(l,r)中的情况下,取最大值v时右端点落在p.把这个五元组塞到优先队列里,以v排序,每次取出一个,然后把这个取过的五元组分成两个( ...
- 洛谷P4216 [SCOI2015]情报传递(树剖+主席树)
传送门 我们可以进行离线处理,把每一个情报员的权值设为它开始收集情报的时间 那么设询问的时间为$t$,就是问路径上有多少个情报员的权值小于等于$t-c-1$ 这个只要用主席树上树就可以解决了,顺便用树 ...
- 三种实现AJAX的方法以及Vue和axios结合使用的坑
前言 之前曾经想自己写一个天气的App,并找到了一个免费的天气数据接口的服务商--和风天气,当时也不懂怎么发HTTP请求,而且也只会用Java语言,看到官方文档里面有一个Java代码示例,就复制了一下 ...
- [USACO 2012 Feb Gold] Cow Coupons【贪心 堆】
传送门1:http://www.usaco.org/index.php?page=viewproblem2&cpid=118 传送门2:http://www.lydsy.com/JudgeOn ...