Я хочу запустить приложение Java при загрузке системы, используя systemd
. Я попробовал сделать, добавив выше скрипты. Но сервис не запускается.
my-startup.service
[Unit]
Description=Startup
[Service]
ExecStart=/usr/local/sbin/my-startup.sh
[Install]
WantedBy=multi-user.target
my-startup.sh
cd /var/www/test.com
nohup java -jar *.jar>test.out 2>test.err &
Но приложение не запускается при запуске сервера.
● my-startup.service - Startup
Loaded: loaded (/etc/systemd/system/my-startup.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Wed 2018-12-12 16:22:52 +0530; 27s ago
Process: 650 ExecStart=/usr/local/sbin/my-startup.sh (code=exited, status=0/SUCCESS)
Main PID: 650 (code=exited, status=0/SUCCESS)
Dec 12 16:22:52 localhost.localdomain systemd[1]: Started Startup.
Dec 12 16:22:52 localhost.localdomain systemd[1]: Starting Startup...
Использование директив systemd вместо оболочки приводит к более согласованной среде. Это включает в себя отказ от использования $ PATH или рабочего каталога путем предоставления полных путей, где они известны.
Ни то, ни другое &
для контроля работы, ни для управления SIGHUP
нужно. Сервисные подразделения systemd уже обоснованы.
Предполагая, что программа не разветвляется, другими словами, java exec продолжает работать, что Type=simple
[Unit]
Description=something
[Service]
ExecStart=/usr/bin/java -jar /var/www/test.com/something.jar
StandardOutput=file:/var/log/something.out.txt
StandardError=file:/var/log/something.err.txt
Type=simple
WorkingDirectory=/var/www/test.com
[Install]
WantedBy=multi-user.target