首页 文章

如何创建Linux服务

提问于
浏览
0

我正在尝试将我的jar作为服务运行,因为我的服务器不应该在系统关闭时大喊大叫 . 所以我计划将服务器作为服务启动 .

我的剧本是,

#!/bin/sh
### BEGIN INIT INFO
# Provides:          myservice
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Interactive:     true
# Short-Description: Start/stop myservice server
### END INIT INFO

JARPATH="/usr/local/myservice/lib"
PID=$JARPATH/pid

start() {
    echo "Starting myservice ..."
    if [ ! -f $PID ]; then
        nohup java -jar $JARPATH/myservice-1.0.0.jar $JARPATH 2>> /dev/null >> /dev/null &
        echo $! > $PID
        echo "myservice started ..."
    else
        echo "myservice is already running ..."
    fi
}

stop() {
    if [ -f $PID ]; then
        #PID=$(cat /usr/local/myservice/pid);
        echo "Stopping myservice ..."
        kill $(cat "$PID");
        echo "myservice stopped ..."
        rm $PID
    else
        echo "myservice is not running ..."
    fi
}

case $1 in
    start)
        echo $JARPATH
        echo $PID
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    *)
esac

我做了以下步骤,

  • sudo chmod x /etc/init.d/myservice

  • sudo update-rc.d myservice默认值

然后使用以下命令启动服务,但上面的脚本无效...

sudo service myservice start

我错了什么?请提供您的想法 .

1 回答

  • 0

    当我在$ 1中加上双引号时,上面的脚本工作正常,

    case "$1" in
        start)
            start
            ;;
        stop)
            stop
            ;;
        restart)
            stop
            start
            ;;
        *)
    esac
    

相关问题