systemctl 및 Oracle Linux 9 및 컬

systemctl 및 Oracle Linux 9 및 컬

나는 Oracle Linux 9(Red Hat "클론")를 가지고 있고 시작 시 컬을 실행하도록 되어 있는 systemctl 서비스를 가지고 있습니다. 다음 오류가 발생합니다.

× gitlab-runner-curl.service - gitlab runner curl
     Loaded: loaded (/etc/systemd/system/gitlab-runner-curl.service; enabled; vendor preset: disabled)
     Active: failed (Result: exit-code) since Tue 2023-05-09 16:51:31 CEST; 27s ago
    Process: 998 ExecStart=/usr/bin/curl -v -k --fail -F token=glptt-35a1ab49139cf38005a38d547ae614cba7c28862 -F ref=acc-mi-1 https>
   Main PID: 998 (code=exited, status=6)
        CPU: 23ms

May 09 16:51:31 serverx systemd[1]: Starting gitlab runner curl...
May 09 16:51:31 serverx curl[998]:   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
May 09 16:51:31 serverx curl[998]:                                  Dload  Upload   Total   Spent    Left  Speed
May 09 16:51:31 serverx curl[998]: [121B blob data]
May 09 16:51:31 serverx curl[998]: * Closing connection 0
May 09 16:51:31 serverx curl[998]: curl: (6) Could not resolve host: servery
May 09 16:51:31 serverx systemd[1]: gitlab-runner-curl.service: Main process exited, code=exited, status=6/NOTCONFIGURED
May 09 16:51:31 serverx systemd[1]: gitlab-runner-curl.service: Failed with result 'exit-code'.
May 09 16:51:31 serverx systemd[1]: Failed to start gitlab runner curl

따라서 분명히 네트워크가 시작되기 전에 실행됩니다(오류로 인해 curl: (6) Could not resolve host: servery). 왜 이런거야? 이것은 내 서비스 파일입니다.

[Unit]
Description=gitlab runner curl
After=gitlab-runner.service network.target

[Service]
Type=oneshot
User=gitlab-runner
ExecStart=/usr/bin/curl -v -k --fail -F token=xxxxxx -F ref=acc-mi-1 https://servery/api/v4/projects/128/trigger/pipeline
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

보시다시피 서비스는 network.start 이후에 시작되어야 합니다. 컬 문은 셸에서 완벽하게 작동합니다.

인사,

이반

답변1

After=network.target나는 네트워크가 온라인 상태가 될 때까지 기다리는 것을 믿지 않습니다 . 시작 후 언제든지 서비스가 실행되지만 network.target네트워크가 온라인 상태이고 연결이 가능한 경우에는 반드시 실행되는 것은 아닙니다.

~에 따르면network*.target각 단위에 대한 문서network-online.target귀하 의 서비스에 다음을 사용할 수 있습니다 .

[Unit]
Description=gitlab runner curl
After=gitlab-runner.service network-online.target
Wants=network-online.target

관련 정보