나는 노력했다시스템 시작 후 30분 후에 rkhunter 스캔을 시작하는 systemd 시작 스크립트를 만듭니다.내 노트북은 다음과 같습니다
[Unit]
Description=starts rkhunter and displays any findings with zenity
[Service]
ExecStartPre=/bin/sleep 1800
ExecStart=/usr/local/sbin/rkhunter-check
[Install]
WantedBy=default.target
하지만 시간 초과 오류로 인해 실패합니다.
Job for rkhunter.service failed because a timeout was exceeded.
ExecStartPre는 이와 같이 작동하지 않는 것 같습니다.
이 문제를 어떻게 해결할 수 있나요?
완벽한 솔루션은 다음과 같습니다.
- 부팅 후 30분 후 최초 실행
- 48시간마다 반복합니다(노트북을 절대 끄지 않는 경우).
답변1
사용하다타이머 장치서비스 시작 시간을 예약하세요. 타이머 장치는 단일 타이머를 사용하여 시작 후 30분 후에 초기 실행을 예약하고 첫 실행 후 48시간 동안 반복하도록 예약할 수 있을 정도로 유연합니다. (첫 시작 후 48시간 또는 실행 완료 후 48시간 중 원하는지 결정할 수도 있습니다.)
문서 rkhunter.service
:
[Unit]
Description=rkhunter check with zenity findings
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/rkhunter-check
문서 rkhunter.timer
:
[Unit]
Description=timer for rkhunter check
[Timer]
OnBootSec=30min
OnUnitActiveSec=48h
[Install]
WantedBy=timers.target
서비스 단위에 섹션이 필요하지 않은 이유는 [Install]
30분 후에 서비스를 실행하는 것뿐인 부팅 시퀀스 중에 서비스 단위를 "활성화"하는 것을 원하지 않기 때문입니다.
활성화해야 합니다.시간제 노동자따라서 실제로 부팅 시 활성화되고 구성된 시간에 서비스 단위를 시작합니다. 그래서:
systemctl daemon-reload
systemctl enable rkhunter.timer
이전에 서비스를 활성화한 경우 이제 타이머 장치로만 시작할 수 있으므로 명시적으로 비활성화해야 합니다.
systemctl disable rkhunter.service
이전에 이 서비스를 활성화한 적이 없고 이 설정을 처음부터 구현하는 경우에는 이 명령이 필요하지 않습니다.
재부팅 후에는 설명하는 요구 사항에 따라 제대로 작동합니다.
답변2
서비스에서 긴 절전 명령을 사용하려면 ExecStartPre
다음을 사용하여 시간 초과를 비활성화해야 합니다 TimeoutStartSec=infinity
.
[Unit]
Description=starts rkhunter and displays any findings with zenity
[Service]
TimeoutStartSec=infinity
ExecStartPre=/bin/sleep 1800
ExecStart=/usr/local/sbin/rkhunter-check
[Install]
WantedBy=default.target
48시간마다 반복적으로 서비스를 시작하려면시간제 노동자@filbranden이 제안한대로