Я хочу запускать 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...
Использование системных директивd вместо оболочки приводит к более согласованному окружению. Это включает в себя отсутствие зависимости от $PATH или рабочей директории, предоставляя полные пути там, где они известны.
Не требуется ни и
для управления заданиями, ни для управления SIGHUP
. systemd service units уже являются фоновыми.
Если предположить, что программа не вилка, другими словами, 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