linux init.d脚本编写模板

#!/bin/bash
### BEGIN INIT INFO
#
# Provides:  location_server
# Required-Start:   $local_fs  $remote_fs
# Required-Stop:    $local_fs  $remote_fs
# Default-Start:    2 3 4 5
# Default-Stop:     0 1 6
# Short-Description:    initscript
# Description:  This file should be used to construct scripts to be placed in /etc/init.d.
#
### END INIT INFO  

## Fill in name of program here.
PROG="location_server"
PROG_PATH="/opt/location_server" ## Not need, but sometimes helpful (if $PROG resides in /opt for example).
PROG_ARGS=""
PID_PATH="/var/run/"  

start() {
    if [ -e "$PID_PATH/$PROG.pid" ]; then
        ## Program is running, exit with error.
        echo "Error! $PROG is currently running!" 1>&2
        exit 1
    else
        ## Change from /dev/null to something like /var/log/$PROG if you want to save output.
        $PROG_PATH/$PROG $PROG_ARGS 2>&1 >/var/log/$PROG &
    $pid=`ps ax | grep -i ‘location_server‘ | sed ‘s/^\([0-9]\{1,\}\).*/\1/g‘ | head -n 1`  

        echo "$PROG started"
        echo $pid > "$PID_PATH/$PROG.pid"
    fi
}  

stop() {
    echo "begin stop"
    if [ -e "$PID_PATH/$PROG.pid" ]; then
        ## Program is running, so stop it
    pid=`ps ax | grep -i ‘location_server‘ | sed ‘s/^\([0-9]\{1,\}\).*/\1/g‘ | head -n 1`
    kill $pid  

        rm -f  "$PID_PATH/$PROG.pid"
        echo "$PROG stopped"
    else
        ## Program is not running, exit with error.
        echo "Error! $PROG not started!" 1>&2
        exit 1
    fi
}  

## Check to see if we are running as root first.
## Found at http://www.cyberciti.biz/tips/shell-root-user-check-script.html
if [ "$(id -u)" != "0" ]; then
    echo "This script must be run as root" 1>&2
    exit 1
fi  

case "$1" in
    start)
        start
        exit 0
    ;;
    stop)
        stop
        exit 0
    ;;
    reload|restart|force-reload)
        stop
        start
        exit 0
    ;;
    **)
        echo "Usage: $0 {start|stop|reload}" 1>&2
        exit 1
    ;;
esac  其中,PROG变量为所要运行的可执行程序的名称, PROG_PATH为可执行文件所在的目录,PROG_ARGS为执行程序的各个参数。

linux init.d脚本编写模板

时间: 2024-10-13 17:04:19

linux init.d脚本编写模板的相关文章

Linux 脚本编写基础

1. Linux 脚本编写基础1.1 语法基本介绍1.1.1 开头程序必须以下面的行开始(必须放在文件的第一行):#!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执行:编译 chmod +x filename 这样才能用./filename 来运行1.1.2 注释 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束.我们真诚地建议您在程序中使用

Python编写的Linux网络设置脚本,Debian Wheezy上测试通过

hon编写的Linux网络设置脚本,Debian Wheezy上测试通过 阿里百川梦想创业大赛,500万创投寻找最赞的APP 技术细节参见Linux网络设置高级指南 注意事项参见程序注释 快速使用指南: 根菜单下,直接回车意味着刷新 其它输入的时候,除了标明特定含义外,直接回车通常意味着取消或者跳过 net-config.py ? 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

转自ruby迷: 使用Net::SSH和Net::SCP编写Linux服务器管理脚本

试了一下perl下安装ssh模块,整了半天linux/window上都装不上,各依赖模块的版本总是匹配不上,后改了一下思路,用ruby吧 Net::SSH和Net::SCP是两个Ruby操作SSH的gem包.Net::SSH相当于cmd,专门用于执行命令:Net::SCP专门用于传输文件.它们俩结合,可以做任何SSH client能做的事情. 安装: gem install net-ssh gem install net-scp 以下所有代码都引用这段代码 require 'net/ssh' r

windows下编写的bash脚本拖入linux环境下脚本出错之编码问题

windows下编写的bash脚本拖入linux环境下脚本出错之编码问题         脚本经常在windows下写好,拖入到linux环境中运行.但是在运行过程中,经常出现编码问题,这里记录一下.方便自己日后查看,或者给刚好遇到这样的问题的同学一个尝试的方法. 在linux环境下vim 进入拖入的bash脚本.执行命令 :set ff=unix

Linux内核模块编写模板

本文讲述如何编写Linux内核模块,需要两个文件 mytest.c,Makefile. 存放到同一个文件夹目录,然后make.make install,就可以完成内核模块的编译生成和安装. 然后通过dmesg命令就可以看到从模块初始化函数输出的信息. mytest.c: #include <linux/module.h> #include <linux/crypto.h> #include <linux/kernel.h> #include <linux/init

Linux Shell脚本编写——呈现数据(五)

Linux系统将每个对象当做文件来处理.这包括输入和输出的过程.Linux用文件描述符来标识每个文件对象.文件描述符是一个非负整数,可以唯一地标识会话中打开的文件.每个过程一次最多可以有9个文件描述符.出于特殊目的,bash shell保留了最早的3个文件描述符(0.1和2) Linux的标准文件描述符 文件描述符 缩写 描述 0 STDIN 标准输入 1 STDOUT 标准输出 2 SRDERR 标准错误 STDIN STDIN文件描述代表shell的标准输入.对于终端界面来说,标准输入就是键

Linux 脚本编写

第一个shell脚本编写 #!/bin/bash # 上面中的 #! 是一种约定标记, 它可以告诉系统这个脚本需要什么样的解释器来执行; #定义变量: APP_BASE_PATH="/opt/app" #特殊变量: $1 传递给脚本或者函数的第1个参数   $2 依次类推 NODE_NAME="$1" OP="$2" WARNAME="$3" WARFILE="$4" #使用变量 只需要在一个定义过的变量前

Linux系统shell脚本编程——生产实战案例

Linux系统shell脚本编程--生产实战案例     在日常的生产环境中,可能会遇到需要批量检查内网目前在线的主机IP地址有哪些,还可能需要检查这些在线的主机哪些端口是开放状态,因此依靠手工来检查是可以实现,但比较费时费力,所以需要结合shell脚本来实现批量检查的功能,那么今天就来做个小小的实验. 1.开发脚本前准备 一般大家都知道,测试主机是否在线,常用的命令无非就是ping.nmap,因此,首先找一个地址来测试下ping命令的效果 [[email protected] scripts]

sysV init服务脚本(入门级)

在sysV风格的init系统中,以Centos 6.x为例,系统服务脚本一般在/etc/rc.d/init.d目录下,每个支持sysV init的脚本,一般都可以接受如下参数: start|stop|restart|status   //这就是我们在centos下常用的控制服务启动与停止的参数. 并且,在sysV init脚本中都会在注释中有这么一行 #chkconfig:runlevel SS KK 因为在sysV init系统中,使用chkconfig进行服务的开机自启动管理以及各运行级别切