这是我在/etc/init.d下创建的springboot服务。
我可以作为springboot用户运行服务,比如
springboot@xxx~$ sudo service springboot-smsmgmt.service start,它以root用户的身份启动服务。
如何以非根用户的身份运行它(springboot用户)?
请注意,我必须以sudo的形式运行命令( sudo service springboot-smgmt.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发布于 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“
#!/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
;;
esachttps://stackoverflow.com/questions/64347071
复制相似问题