Javaアプリケーションを自動的に起動するスクリプトがあります。
# colors
red='\e[0;31m'
green='\e[0;32m'
yellow='\e[0;33m'
reset='\e[0m'
echoRed() { echo -e "${red}$1${reset}"; }
echoGreen() { echo -e "${green}$1${reset}"; }
echoYellow() { echo -e "${yellow}$1${reset}"; }
# Check whether the application is running.
# The check is pretty simple: open a running pid file and check that the process
# is alive.
isrunning() {
# Check for running app
if [ -f "$RUNNING_PID" ]; then
proc=$(cat $RUNNING_PID);
if /bin/ps --pid $proc 1>&2 >/dev/null;
then
return 0
fi
fi
return 1
}
start() {
if isrunning; then
echoYellow "Test App Already Running"
return 0
fi
pushd $APPLICATION_DIR > /dev/null
Nohup Java -jar *.jar>test.out 2>test.err &
echo $! > ${RUNNING_PID}
popd > /dev/null
if isrunning; then
echoGreen "Test Application started"
exit 0
else
echoRed "The Test Application has not started - check log"
exit 3
fi
}
restart() {
echo "Restarting Test Application"
stop
start
}
stop() {
echoYellow "Stopping Test Application"
if isrunning; then
kill `cat $RUNNING_PID`
rm $RUNNING_PID
fi
}
status() {
if isrunning; then
echoGreen "Test Application is running"
else
echoRed "Test Application is either stopped or inaccessible"
fi
}
case "$1" in
start)
start
;;
status)
status
exit 0
;;
stop)
if isrunning; then
stop
exit 0
else
echoRed "Application not running"
exit 3
fi
;;
restart)
stop
start
;;
*)
echo "Usage: $0 {status|start|stop|restart}"
exit 1
esac
参照:- https://vertx.io/blog/vert-x-3-init-d-script/
Sudo service test start
を使用してこのコマンドを実行すると、正常に動作します。起動時にこれを自動的に実行したい。 test.service
に/etc/systemd/system
ファイルを作成しようとしました。サービスが起動しない場合。
[Unit]
Description=Test service
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=test
ExecStart=/etc/init.d/test start
[Install]
WantedBy=multi-user.target
これの何が問題になっていますか?
Systemdスクリプトを書く必要はありませんtest.service
起動時にinit.dスクリプトを有効にします。 init.dスクリプトがすでに正常に機能している場合は、次のコマンドを実行して、起動時にinit.dスクリプトを実行できるようにする必要があります。
Sudo update-rc.d test defaults
Sudo update-rc.d test enable