Я пишу службу Linux для развертывания моего веб-приложения Springboot в качестве службы.
Вот сервисный файл springboot.service
[Unit]
Description=My Webapp Java REST Service
[Service]
User=ubuntu
# The configuration file application.properties should be here:
#change this to your workspace
WorkingDirectory=/home/ubuntu
#path to executable.
#executable is a bash script which calls jar file
ExecStart=/home/ubuntu/spring-start
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Мой файл сценария spring-start.sh
sudo java -jar "/home/ubuntu/FirstWebAppWithoutDB.jar"
Я также дал разрешение на выполнение spring-start.sh от chmod u+x spring-start.sh
sudo systemctl daemon-reload
sudo systemctl enable springboot.service
sudo systemctl start springboot
sudo systemctl status springboot
К сожалению, служба завершается с ошибкой Exec format error:
springboot.service: Failed to execute command: Exec format error
Jul 14 07:39:56 ip-172-31-40-71 systemd[10075]: springboot.service: Failed at step EXEC spawning /home/ubuntu/spring-start.sh: Exec format error





добавить шебанг в скрипт
#!/bin/bash
sudo java -jar "/home/ubuntu/FirstWebAppWithoutDB.jar"
и разрешение на исполнение
chmod +x spring-start.sh
И добавьте полный путь к сценарию, который вы вызываете, в файл системной службы, лучше всего с помощью ExecStart=/bin/bash /home/ubuntu/spring-start
мне нужно добавить это в файл «springboot.service» ???
@ZINEMahmoud Зависит от того, что вы подразумеваете под «этим». Если вы про комментарий от rubo77, то да, в строке ExecStart должны быть полные пути; если вы говорите о добавлении шебанга, то нет - шебанг идет в самом сценарии оболочки, а не в файле springboot.service.
Ваш весна-старт.ш выполняется бить, вам нужно указать свой ExecStart в файле Springboot.сервис следующим образом: ExecStart=/bin/bash/home/ubuntu/spring-start.sh
как я могу использовать это для python3??
Добавить шебанг в spring-start.sh?