У меня есть этот сценарий SystemD:
[Unit] Описание = Клиентские службы RTC
[Service]
user=linuxuser
WorkingDirectory=/usr/lib/systemd/scripts/
Type=forking
ExecStart=/bin/bash rtc_client.sh start
ExecStop=/bin/bash rtc_client.sh stop
Restart=no
RemainAfterExit=no
TimeoutStartSec=0
TimeoutStopSec=60
[Install]
WantedBy=multi-user.target
Он запускает скрипт правильно, но всегда с root. Вот:
#!/bin/bash
RTCENGINEID=$HOSTNAME'_engine'
RTCUSER='RTCUSER'
RTCPW='RTCPWD'
RTCSERVER='SERVER'
RTCSERVERPORT='9443'
RTCREPOSITORY=https://$RTCSERVER:$RTCSERVERPORT/ccm
export WORKDIR='/opt/ibm/buildsystemtoolkit/buildsystem/buildengine/eclipse'
export JAVACMD=/opt/ibm/java-s390x-71/jre/bin/java
export ARGS="-cp ./plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar org.eclipse.equinox.launcher.Main -application com.ibm.team.build.engine.jazzBuildEngine -repository $RTCREPOSITORY -engineId $RTCENGINEID -userId $RTCUSER -pass $RTCPW"
RTCJAR=org.eclipse.equinox.launcher
PIDFILE='/var/run/rtc_client/rtc_client.pid'
DEBUGLOG='/tmp/rtc_debug.log'
. /home/linuxuser/.bash_profile
start() {
cd $WORKDIR
nohup $JAVACMD $ARGS > $DEBUGLOG &
sleep 10
pgrep -f $RTCJAR > $PIDFILE
echo "USER IS: " $(whoami) | tee -a $DEBUGLOG
echo "PID IS: " $(cat $PIDFILE) | tee -a $DEBUGLOG
}
stop() {
echo "USER IS: " $(whoami) | tee -a $DEBUGLOG
echo "PID IS: " $(cat $PIDFILE) | tee -a $DEBUGLOG
kill $(cat $PIDFILE)
rm -f $PIDFILE
}
restart() {
stop
start
}
reload() {
restart
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit $?
Я попытался запустить его с помощью «su pers5i», и он работает правильно, и я не могу понять, в чем может быть проблема.
Любая помощь очень ценится.
В соответствии с https://www.freedesktop.org/software/systemd/man/systemd.exec.html. Возможно, «u» в имени пользователя должно быть написано с большой буквы, чтобы выполнить то, что вам нужно.
[Unit] Description=RTC Client Services [Service] User=linuxuser WorkingDirectory=/usr/lib/systemd/scripts/ Type=forking ExecStart=/bin/bash rtc_client.sh start ExecStop=/bin/bash rtc_client.sh stop Restart=no RemainAfterExit=no TimeoutStartSec=0 TimeoutStopSec=60 [Install] WantedBy=multi-user.target