首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以非根用户的身份运行springboot init.d服务?

如何以非根用户的身份运行springboot init.d服务?
EN

Stack Overflow用户
提问于 2020-10-14 05:19:41
回答 1查看 620关注 0票数 1

这是我在/etc/init.d下创建的springboot服务。

我可以作为springboot用户运行服务,比如

springboot@xxx~$ sudo service springboot-smsmgmt.service start,它以root用户的身份启动服务。

如何以非根用户的身份运行它(springboot用户)?

请注意,我必须以sudo的形式运行命令( sudo service springboot-smgmt.service start)

代码语言:javascript
复制
#!/bin/sh
SERVICE_NAME=SMS-Gateway
PATH_TO_DEPLOY_DIR=/opt/springboot/smsmgmt
JAR_NAME=smsmgmt.jar
PID_PATH_NAME=/tmp/SMS-Gateway.pid
PROFILE_NAME=ASM
JAVA_PATH=/etc/alternatives/java_sdk_1.8.0/bin/java
JAVA_CONF="-Xms1024m -Xmx2048m -XX:MaxPermSize=512m"

case $1 in
    start)
        echo "Starting $SERVICE_NAME ..."
        PID=$(cat $PID_PATH_NAME);
        if [ -f $PID_PATH_NAME ] && [ ! -z "$PID" ] &&  kill -s 0 $PID; then
           echo "$SERVICE_NAME is already running ..."
        else
           nohup $JAVA_PATH $JAVA_CONF -jar -Dspring.profiles.active=$PROFILE_NAME $PATH_TO_DEPLOY_DIR/$JAR_NAME  > /opt/springboot/smsmgmt/logs/smsapp.log  & echo $! > $PID_PATH_NAME
           echo "$SERVICE_NAME started ..."

        fi
    ;;
    stop)
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME);
            echo "$SERVICE_NAME stoping ..."
            kill $PID;
            echo "$SERVICE_NAME stopped ..."
            #rm $PID_PATH_NAME
            cat /dev/null > $PID_PATH_NAME
        else
            echo "$SERVICE_NAME is not running ..."
        fi
    ;;
    restart)
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME);
            echo "$SERVICE_NAME stopping ...";
            kill $PID;
            echo "$SERVICE_NAME stopped ...";
            #rm $PID_PATH_NAME
            cat /dev/null > $PID_PATH_NAME
            echo "$SERVICE_NAME starting ..."
            nohup $JAVA_PATH $JAVA_CONF-jar -Dspring.profiles.active=$PROFILE_NAME $PATH_TO_DEPLOY_DIR/$JAR_NAME > /opt/springboot/smsmgmt/logs/smsapp.log & echo $! > $PID_PATH_NAME
            echo "$SERVICE_NAME started ..."
        else
            echo "$SERVICE_NAME is not running ..."
        fi
    ;;
esac
EN

回答 1

Stack Overflow用户

发布于 2020-10-15 06:53:08

我就是这样做的

su - -c "nohup $JAVA_PATH $JAVA_CONF -jar -Dspring.profiles.active=$PROFILE_NAME $PATH_TO_DEPLOY_DIR/$JAR_NAME >/opt/ springboot /smsmgmt/log/smsapp.log& echo $!> $PID_PATH_NAME“

代码语言:javascript
复制
 #!/bin/sh
SERVICE_NAME=SMS-Gateway
PATH_TO_DEPLOY_DIR=/opt/springboot/smsmgmt
JAR_NAME=smsmgmt.jar
PID_PATH_NAME=/tmp/SMS-Gateway.pid
PROFILE_NAME=ASM
JAVA_PATH=/etc/alternatives/java_sdk_1.8.0/bin/java
JAVA_CONF="-Xms1024m -Xmx2048m -XX:MaxPermSize=512m"

case $1 in
    start)
        echo "Starting $SERVICE_NAME ..."
        PID=$(cat $PID_PATH_NAME);
        if [ -f $PID_PATH_NAME ] && [ ! -z "$PID" ] &&  kill -s 0 $PID; then
           echo "$SERVICE_NAME is already running ..."
        else
           su - springboot -c "nohup $JAVA_PATH $JAVA_CONF  -jar -Dspring.profiles.active=$PROFILE_NAME $PATH_TO_DEPLOY_DIR/$JAR_NAME  > /opt/springboot/smsmgmt/logs/smsapp.log  & echo $! > $PID_PATH_NAME"
           echo "$SERVICE_NAME started ..."

        fi
    ;;
    stop)
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME);
            echo "$SERVICE_NAME stoping ..."
            su - springboot -c "kill $PID";
            echo "$SERVICE_NAME stopped ..."
            #rm $PID_PATH_NAME
            cat /dev/null > $PID_PATH_NAME
        else
            echo "$SERVICE_NAME is not running ..."
        fi
    ;;
    restart)
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME);
            echo "$SERVICE_NAME stopping ...";
            su - springboot -c "kill $PID";
            echo "$SERVICE_NAME stopped ...";
            #rm $PID_PATH_NAME
            cat /dev/null > $PID_PATH_NAME
            echo "$SERVICE_NAME starting ..."
            su - springboot -c "nohup $JAVA_PATH $JAVA_CONF  -jar -Dspring.profiles.active=$PROFILE_NAME $PATH_TO_DEPLOY_DIR/$JAR_NAME  > /opt/springboot/smsmgmt/logs/smsapp.log  & echo $! > $PID_PATH_NAME"
            echo "$SERVICE_NAME started ..."
        else
            echo "$SERVICE_NAME is not running ..."
        fi
    ;;
esac
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64347071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档