종료하기 전에 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에 의해 무선 연결이 끊어졌습니다.