【Ubuntu笔记】init.d目录服务脚本

吐槽

本来只是想在云服务器上开个tcp聊天室玩玩,可惜对Linux系统实在不了解,刚开始只在ssh窗口通过命令直接打开可执行文件,可惜窗口一关tcp服务器就停了。

后来了解到,想要他一直运行,要用脚本把这个可执行文件当做服务启动。然后去就去网上找代码,本以为这个肯定很简单,随便找个就行,没想到这么长,还有各种问题,不停的百度、修改、百度、修改,终于搞出来一个能用的,竟然也能大概了解一点各个语句的意思了,不过还是有很多不了解的地方。

过程

  1. cd /etc/init.d 跳转到这个目录
  2. sudo vim my_tcp 创建服务脚本,我这个名字叫my_tcp
  3. 输入以下代码,看得懂的地方我都注释了,还有不少不懂的,不过能用了。写完保存退出。
#!/bin/bash

## Fill in name of program here.
PROG="tcp_server"  #需要启动的可执行文件名字
PROG_PATH="/home/bearpi/my_tcp"  #可执行文件路径
PROG_ARGS=""  #命令参数(我这里没有参数,就留空)
PID_PATH="/var/run"  #PID路径(一般不需要改)

start() {
    if [ -e "$PID_PATH/$PROG.pid" ]; then
        # 如果该程序已经在运行(存在对应的pid文件),输出错误并退出
        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 -A |grep ${PROG}| awk '{print $1}'` #查找所有进程,搜索进程名称,取出第一个参数,即PID
        echo "$PROG started"
        echo $pid > "$PID_PATH/$PROG.pid"   #将PID写入.pid文件
    fi
}

stop() {
    echo "begin stop"
    if [ -e "$PID_PATH/$PROG.pid" ]; then
        # 根据.pid文件是否存在来判断进程是否在运行
        pid=`ps -A |grep ${PROG}| awk '{print $1}'` #查找PID,会找出所有该名字的PID,然后全部结束
        kill $pid  #根据PID结束进程
        rm -f  "$PID_PATH/$PROG.pid"  #移除.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  #检查是否以root权限执行
    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
                                             

4.sudo chmod +x /etc/init.d/my_tcp 给脚本添加可执行权限
5.sudo /etc/init.d/my_tcp start 启动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值