NetworkManager가 종료되기 전에 systemd를 사용하여 실행 파일을 실행하는 방법

NetworkManager가 종료되기 전에 systemd를 사용하여 실행 파일을 실행하는 방법

종료하기 전에 NetworkManager를 실행해야 하는 실행 파일을 실행하려고 합니다. 이것은 현재 가지고 있는 서비스 파일(/lib/systemd/system에 있음)이며 이더넷 연결이 있으면 제대로 작동하지만 무선 연결만 있는 경우에는 작동하지 않습니다.

[Unit]
Requires=network.target
Requires=NetworkManager.service
Before=shutdown.target
After=network.target NetworkManager.service

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=MyShutdownExecutable

[Install]
wantedBy=multi-user.target

이는 내장된 장치에서 실행되며 사용자가 이더넷 연결을 사용하는 경우도 있고 무선 연결만 사용하는 경우도 있고 두 가지를 모두 사용하는 경우도 있으므로 모든 네트워크 연결 조합에서 작동해야 합니다.

테스트에서 종료하는 동안 실행 파일이 실행되기 전에 NetworkManager가 종료되었다는 메시지를 보았습니다. 내 서비스 파일에 After=NetworkManager.service를 포함하면 내 실행 파일이 완료될 때까지 NetworkManager가 종료되지 않는다는 것을 보장해야 한다고 생각합니다. 이는 이더넷 연결이 있는 경우인 것 같습니다.

어떤 도움이라도 대단히 감사하겠습니다.

답변1

이것을 서비스 파일로 사용해 볼 수 있습니까?

[Unit]
After=wpa_supplicant.service dbus.service NetworkManager.service
Requires=wpa_supplicant.service dbus.service NetworkManager.service

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=MyShutdownExecutable

[Install]
WantedBy=multi-user.target

스크립트를 실행할 수 있었습니다. NetworkManager가 계속 실행 중인데도 wpa 신청자와 dbus에 의해 무선 연결이 끊어졌습니다.

관련 정보