서비스가 실패하면 다음과 같은 출력이 표시됩니다.
Nov 06 10:23:55 irgprod2 systemd[1]: emsxsub.service: Unit entered failed state.
Nov 06 10:23:55 irgprod2 systemd[1]: emsxsub.service: Failed with result 'exit-code'.
Nov 06 10:23:58 irgprod2 systemd[1]: emsxsub.service: Service hold-off time over, scheduling restart.
Nov 06 10:23:58 irgprod2 systemd[1]: Stopped EMSX API Subscription.
무엇이 잘못되었는지, 서비스가 다시 시작되지 않은 이유에 대한 설명이 없으며 "시작 제한"에 대한 언급도 없습니다. 프로세스는 다음과 같습니다.
[Unit]
Description=EMSX API Subscription
After=multi-user.target
[Service]
Type=simple
Restart=always
RestartSec=3
User=root
Environment=PYTHONPATH=/k/svn_prod
Environment=LD_LIBRARY_PATH=/opt/lib
ExecStart=/usr/bin/python /k/svn_prod/com_wrappers/bbg_emsxsub.py
RemainAfterExit=no
[Install]
WantedBy=multi-user.target
RemainAfterExit 인수 없이 User 인수 없이 시도했습니다. systemctl 프로세스가 활성화되고 "service emsxsub restart"를 수행하면 프로세스가 성공적으로 실행되고 다시 시작됩니다. 오류가 발생한 경우에만 시스템은 다시 시작을 예약한 다음 서비스를 성공적으로 다시 시작할 수 없는 상태에서 서비스를 중지합니다. 이 문제가 있는 다른 사람을 찾을 수 없습니다. 다른 문제는 "제한 시작" 오류인 것 같지만 여기서는 그렇지 않습니다. 이전에 이 문제를 본 사람이 있나요? 수동으로 다시 시작하면 모든 것이 제대로 작동하는 이유를 이해할 수 없지만 서비스가 실패하면 서비스가 자동으로 다시 시작되지 않습니다.
이것은 Journalctl 출력입니다.
Nov 06 10:23:55 irgprod2 python[18451]: Traceback (most recent call last):
Nov 06 10:23:55 irgprod2 python[18451]: File "/k/svn_prod/com_wrappers/bbg_emsxsub.py", line 533, in <module>
Nov 06 10:23:55 irgprod2 python[18451]: main()
Nov 06 10:23:55 irgprod2 python[18451]: File "/k/svn_prod/com_wrappers/bbg_emsxsub.py", line 505, in main
Nov 06 10:23:55 irgprod2 python[18451]: raise RuntimeError() # raise error so process restarts
Nov 06 10:23:55 irgprod2 python[18451]: RuntimeError
Nov 06 10:23:55 irgprod2 systemd[1]: emsxsub.service: Main process exited, code=exited, status=1/FAILURE
Nov 06 10:23:55 irgprod2 systemd[1]: emsxsub.service: Unit entered failed state.
Nov 06 10:23:55 irgprod2 systemd[1]: emsxsub.service: Failed with result 'exit-code'.
Nov 06 10:23:58 irgprod2 systemd[1]: emsxsub.service: Service hold-off time over, scheduling restart.
Nov 06 10:23:58 irgprod2 systemd[1]: Stopped EMSX API Subscription.
출력 systemctl status emsxsub.service
:
* emsxsub.service - EMSX API Subscription
Loaded: loaded (/lib/systemd/system/emsxsub.service; enabled; vendor preset: enabled)
Active: inactive (dead) (Result: exit-code) since Wed 2018-11-07 08:18:49 EST; 40s ago
Process: 3936 ExecStart=/usr/bin/python /k/svn_prod/com_wrappers/bbg_emsxsub.py (code=exited, status=1/FAILURE)
Main PID: 3936 (code=exited, status=1/FAILURE)
Nov 07 08:18:45 irgprod2 systemd[1]: emsxsub.service: Unit entered failed state.
Nov 07 08:18:45 irgprod2 systemd[1]: emsxsub.service: Failed with result 'exit-code'.
Nov 07 08:18:49 irgprod2 systemd[1]: emsxsub.service: Service hold-off time over, scheduling restart.
Nov 07 08:18:49 irgprod2 systemd[1]: Stopped EMSX API Subscription.
출력 systemctl show emsxsub.service | grep -i restart
:
[trading@irgprod2 ~]$ systemctl show emsxsub.service | grep -i restart
Restart=always
RestartUSec=3s
시스템 제어 버전:
systemd 229
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN
출시 세부정보:
[trading@irgprod2 ~]$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
답변1
제거하면 After=multi-user.target
문제가 해결되었습니다. 순환 종속성에 대한 Filipe의 관찰은 올바른 것 같습니다.