【发布时间】:2021-01-28 11:47:50
【问题描述】:
这是我在 /etc/init.d 下创建的 springboot 服务。
我作为 springboot 用户 sudo 并运行类似的服务
springboot@xxx~$ sudo service springboot-smsmgmt.service start 以root用户身份启动服务。
如何以非 root 用户(springboot 用户)运行它?
请注意,我必须以 sudo 运行命令(sudo service springboot-smsmgmt.service start)
#!/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
【问题讨论】:
-
1) init.d 服务通常以“root”身份运行 2) sudo 允许您以 any 用户身份运行命令(您有权运行的任何用户作为)。 Sooooo - 如果您想以指定用户身份运行脚本或程序 - 然后只需“sudo”该脚本或程序 :) 问题解决了 :)
-
您好,感谢您的评论。我是 Unix 新手,不知道该怎么做。任何示例都会有所帮助
-
听起来您的 实际 问题是“如何在系统启动时自动启动我的 Spring Boot 应用程序”?答案是“视情况而定”。特别是,它取决于 nix 的哪个版本。如果这是“生产服务器”,我*肯定会向您的系统管理员寻求指导。但是请看这里,在 57.1.1 和 57.1.2 中查看惯用选项“System V”和“systemd”:docs.spring.io/spring-boot/docs/1.4.0.RC1/reference/html/…
-
我想通了
标签: spring-boot unix init.d