시스템 서비스에서 "After" 키워드는 어떻게 작동하나요?

시스템 서비스에서 "After" 키워드는 어떻게 작동하나요?

a.service와 b.service 두 가지 서비스를 준비했습니다. a.service는 a.timer를 사용하여 실행됩니다.

서비스

[Unit]
Description=service a
After=network-online.target
Wants=network-online.target

[Service]
Type=simple

#restart on failure and tries 5 times. If fail in all, then reboot the system
ExecStart=/usr/bin/python /home/pi/.clar/a.py
Restart=on-failure
RestartSec=15
StartLimitBurst=5
StartLimitInterval=2min
StartLimitAction=reboot

a.타이머

[Unit]
Description=10minute timer

[Timer]
# start this 20 Sec after boot:
OnBootSec=20

# ... and then every 10 minute:
OnUnitActiveSec=10m

[Install]
WantedBy=multi-user.target

b.서비스

[Unit]
Description=b service
After=a.service

[Service]
Type=simple

#restart on failure and tries 5 times. If fail in all, then reboot the system
ExecStartPre=/usr/bin/python /home/pi/.clar/c.py
ExecStart=/usr/bin/python /home/pi/.clar/b.py
Restart=on-failure
RestartSec=15
StartLimitBurst=5
StartLimitInterval=2min
StartLimitAction=reboot

[Install]
WantedBy=multi-user.target

내 구성에서는 a.service가 시작 후 20초 후에 시작되고 b.service는 a.service 후에 실행되어야 합니다.

그러나 실제로 b.service는 a.service보다 먼저 시작됩니다. Google을 검색하여 Requires=a.serviceb.service 단위 섹션에 및 추가를 시도했습니다. Wants=a.service그러나 아무도 나를 도와주지 않았습니다.

퇴근 후에는 이해가 안 돼요. 구성에 추가해야 할 다른 항목이 있나요?

답변1

무루가 말했듯이 아래와 같이 수정할 수 있습니다.

[Unit]
Description=b service
After=a.service

[Service]
Type=simple

#restart on failure and tries 5 times. If fail in all, then reboot the system
ExecStartPre=/usr/bin/python /home/pi/.clar/c.py
ExecStart=/usr/bin/python /home/pi/.clar/b.py
Restart=on-failure
RestartSec=15
StartLimitBurst=5
StartLimitInterval=2min
StartLimitAction=reboot

[Install]
WantedBy=a.service

그럼 당신은해야 sudo systemctl disable b.service하고sudo systemctl enable b.service

관련 정보