다른 스크립트를 사용하여 systemd를 스크립트하는 방법

다른 스크립트를 사용하여 systemd를 스크립트하는 방법

activate.sh여기에 systemd를 처음 사용했습니다. 기본적으로 , toggle.sh및 3개의 다른 스크립트가 있습니다 deactivate.sh. 다음을 수행하기 위해 시스템 서비스와 타이머를 사용하고 싶습니다.

  • 서비스가 처음 시작되면 다음을 실행하십시오.activate.sh 한 번
  • 타이머를 사용하여 다음까지 계속 실행하고 싶습니다 toggle.sh.
  • 서비스가 중지되었습니다. 이 경우 실행됩니다.deactivate.sh

ExecStart나는 다른 , ExecStartPre, ExecStop, 등을 시도했지만 RemainAfterExit성공하지 못했습니다. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까?

답변1

다음과 같이 세 개의 새 유닛 파일을 생성해야 합니다(테스트되지 않음).

mything.service:

[Unit]
Description=My custom thingy

[Service]
Type=service
ExecStart=/path/to/activate.sh
ExecStop=/path/to/deactivate.sh

[Install]
WantedBy=multi-user.target
Wants=togglemything.timer

togglemything.timer:

[Unit]
Description=My custom timer thingy

[Timer]
OnCalendar=hourly

togglemything.service:

[Unit]
Description=Toggle my custom thing

[Service]
Type=oneshot
ExecStart=/path/to/toggle.sh

마지막 두 개는 해당 지점 이전에 동일한 이름을 가져야 합니다. 그렇지 않으면 타이머는 아무 작업도 수행하지 않습니다.

당신이해야 할 일은 systemctl start mything일을 작동시키는 것뿐입니다.

관련 정보