WiFi 연결을 설정하는 conWlan0.service라는 시스템 서비스가 있습니다. 이제 주기적으로 연결을 확인하기 위해 다른 유닛을 만들고 싶습니다. 이것이 합리적인 시작인가?
[Unit]
Description=...
After=conWlan0.service
OnFailure=conWlan0.service
[Service]
Type=simple
ExecStart=/usr/bin/checkWiFi
RestartSec=120
Restart=always
모든 것이 정확하면 checkWifi 스크립트는 0으로 종료되고, 그렇지 않으면 오류 코드를 반환합니다. 어떤 제안이 있으십니까?
답변1
무언가를 주기적으로 실행하려면 SystemD 타이머 장치를 사용해야 합니다. 지속적으로 다시 시작되는 서비스 장치를 갖는 것은 기본적으로 시스템이 항상 성능 저하 모드에 있기 때문에 좋은 생각이 아닙니다(하나 이상의 서비스가 계속 실행될 수 없음).
자세한 내용은 여기에서 확인할 수 있습니다.스택 오버플로 답변, 내부에SystemD 타이머에 관한 Arch Linux 위키매뉴얼 페이지에 있지만 systemd.timer
그 요점은 다음과 같습니다.
1. 검사 서비스 설정
/etc/systemd/system/checkwifi.service
:
[Unit]
Description=...
[Service]
Type=oneshot
ExecSTart=/usr/bin/checkWiFi
2. 타이머를 설정해 가끔 WiFi를 확인하세요
/etc/systemd/system/checkwifi.timer
:
[Unit]
Description=Timer for checkWifi
After=conWlan0.service
[Timer]
OnActiveSec=120
[Install]
WantedBy=timers.target
3. 타이머 장치 활성화 및 시작
systemctl enable --now checkwifi.timer
타이머를 시작할 때 conWlan0.service
아직 시작되지 않은 경우 systemctl
타이머 전제 조건이 충족될 때까지 차단하고 기다립니다.