추가 읽기

추가 읽기

다음과 같은 서비스가 있습니다.

/etc/systemd/system/Detectwifi.service

[Unit]
Description=wifi detect automation
Requires=wpa_supplicant.service
After=wpa_supplicant.service

[Service]
Type=simple
ExecStart=/sbin/wpa_cli -a /home/pi/test.sh -B
Restart=always
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

그런 다음 서비스를 시작하면 명령이 wpa_cli -a /home/pi/test.sh -B실행되는 것을 볼 수 있습니다. 그런 다음 프로세스를 종료하면 다시 시작되지 않습니다.

다시 시작해도 작동하지 않는 이유를 알 수 있나요?

또한 해당 줄에 주석을 달면 RemainAfterExit=yes서비스가 다시 시작되지만 프로세스가 성공적으로 실행되더라도 계속 다시 시작됩니다.

답변1

-B프로그램에 언급되지 않은 준비 프로토콜을 유지 하고 전환하라는 제안은 리뷰 답변에 대해 항상 매우 회의적이어야 하는 이유에 대한 또 다른 예입니다.

  • RemainAfterExit=yes여기처럼 거짓말일 때는 사용하지 마세요. 당신의 데몬아니요프로세스가 종료되면 실행 중인 것으로 간주됩니다.
  • 사용하지 마세요 -B. 어쨌든 데몬 아이디어는 오류이며 프로세스는이미 시작했어데몬 컨텍스트에서.

wpa_supplicant당신이 직면하게 될 한 가지 문제는 문제의 서비스가 제어 소켓을 바인딩할 때까지 서비스가 실행되어서는 안 된다는 것을 systemd가 모른다는 것입니다 /run/wpa_supplicant/. 여기에는 타이밍 문제가 있으며 서비스가 "수락할 때까지 계속 다시 시작됩니다." " 그것.

wpa_supplicant제어 소켓을 열린 파일 설명자로 전달하는 방법은 아직 제공되지 않았습니다. 이를 통해 시스템 소켓 장치를 사용하여 정의할 수 있으며 wpa_cli그 뒤에 서비스 장치와 함께 주문할 수 있습니다.

추가 읽기

관련 정보