30분 지연으로 시스템 시작 스크립트 만들기

30분 지연으로 시스템 시작 스크립트 만들기

나는 노력했다시스템 시작 후 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이 제안한대로

관련 정보