Служба Systemd для файла jar получает ошибку тайм-аута операции через несколько минут или остается в режиме активации

сервисная единица это:

[Unit]
Description=test
After=syslog.target
After=network.target

[Service]
Type=forking
ExecStart=/bin/java -jar /home/ec2-user/test.jar
TimeoutSec=300

[Install]
WantedBy=multi-user.target

заводится нормально 1-4 мин. Но позже это терпит неудачу:

хвост /var/журнал/сообщения:

Feb 27 18:43:44 ip-172-31-40-48 systemd: Reloading.
Feb 27 18:44:06 ip-172-31-40-48 systemd: Starting test...
Feb 27 18:44:06 ip-172-31-40-48 java: 5.1.73
Feb 27 18:44:06 ip-172-31-40-48 java: Starting the internal [HTTP/1.1] server on port 8182
Feb 27 18:49:06 ip-172-31-40-48 systemd: test.service operation timed out.Terminating.
Feb 27 18:49:06 ip-172-31-40-48 systemd: test.service: control process exited, code=exited status=143
Feb 27 18:49:06 ip-172-31-40-48 systemd: Failed to start test.
Feb 27 18:49:06 ip-172-31-40-48 systemd: Unit test.service entered failed state.

systemctl status test.service (при перезапуске остается в режиме активации):

test.service - Setsnew
Loaded: loaded (/etc/systemd/system/test.service; enabled)
Active: activating (start) since Sun 2015-03-01 14:29:36 EST; 2min 30s ago
Control: 32462 (java)
CGroup: /system.slice/test.service

Состояние systemctl test.service (после сбоя):

test.service - test
Loaded: loaded (/etc/systemd/system/test.service; enabled)
Active: failed (Result: exit-code) since Fri 2015-02-27 18:49:06 EST; 18min ago
Process: 27954 ExecStart=/bin/java -jar /home/ec2-user/test.jar (code=exited, status=143)
  • при запуске jar в командной строке все работает нормально.
  • попытался изменить местоположение банки, потому что я думал, что это проблема с разрешениями
  • Селинукс выключен

Как я могу исправить эту проблему, чтобы я мог запустить банку при загрузке? есть ли альтернативы? (RHEL7 не включает служебную команду)


person user3674227    schedule 28.02.2015    source источник


Ответы (1)


Вы создали тип службы forking, но эта служба не разветвляется. Он просто работает напрямую. Таким образом, systemd подождал пять минут, пока программа демонизирует себя, и так и не сделал этого. Правильный тип для такой службы — simple.

Вы также отключили SELinux, что является еще одной проблемой, которую вы должны решить.

person Michael Hampton    schedule 09.06.2015