systemd로 30 분마다 스크립트 실행


19

시스템으로 부팅 한 후 30 분마다 스크립트를 실행하고 싶습니다. 나는 당신이 cron을 사용할 수 있다는 것을 알고 있지만,이 기능을 자주 사용하지 않을 것이므로 systemd로 시도하고 싶습니다.

지금까지 나는 무언가를 한 번만 실행할 수있는 단조로운 타이머 만 발견했습니다 (적어도 그렇게 생각합니다). 어떻게 것 foo.timerfoo@user.service같은 모양이 경우 뭔가 부팅 / 시스템 시작부터 30 분마다 실행하고 싶어?

foo@user.service

[Unit]
Description=run foo
Wants=foo.timer

[Service]
User=%I
Type=simple
ExecStart=/bin/bash /home/user/script.sh

foo.timer

[Unit]
Description=run foo

[Timer]
where I am stuck... ???

답변:


26

서비스 용 파일과 이름이 같은 타이머 용 파일 두 개를 만들어야합니다.

예:

/etc/systemd/system/test.service

[Unit]
Description=test job

[Service]
Type=oneshot
ExecStart=/bin/bash /tmp/1.sh

/etc/systemd/system/test.timer

[Unit]
Description=test

[Timer]
OnUnitActiveSec=10s
OnBootSec=10s

[Install]
WantedBy=timers.target

그런 다음 명령을 사용하여 systemd를 다시로드하고로 systemctl daemon-reload타이머를 시작 systemctl start test.timer하거나 기본적으로 활성화하십시오.

시험 내용 1.sh

#!/bin/bash
echo `date` >> /tmp/2

사용 가능한 모든 타이머를 확인하는 명령 : systemctl list-timers --all

프로젝트 페이지ArchLinux 페이지의 예제에 대한 자세한 정보


systemd는 스크립트를 받아들이고 나열되었지만 아무 일도 일어나지 않습니다
TomTom

어느 것? 하나는 타이머와 다른 서비스라는 두 개의 스크립트가 있어야합니다. 그들이 목록 타이머 명령에 의해 확인 될 수있는 실행되었을 때 시간, 가능한 오류에 의해 확인 될 수 systemctl status test.timersystemctl status test.servicecomamand
Reishin

1
systemctl list-timers --all명령을 사용 하여 출력을 확인하십시오. 그는 같이해야 . 단위, 왼쪽 및 전달 된 열을 확인하십시오. 타이머가 있으면 서비스 파일을보고 타이머가 정상적으로 작동하므로 버그를 확인하십시오.
Reishin

1
아니요, coz의 주요 질문은 "알림-보내기"에 대해 아무 것도 묻지 않으며 그러한 주제가 이미 존재할 때 두 가지 다른 것을 섞어서는 안된다고 생각합니다 . 귀하의 경우 export DISPLAY=:0.0에는 스크립트 에 추가 하십시오.
Reishin

1
PS : systemd.timer 사람에 따라에만 OnCalendar (즉 wallclock) 구성에 영향이 지속 = true를
snyh

11

타이머를 사용하지 않는 다른 옵션이 있습니다. 타이밍이 굉장히 중요하지 않고 스크립트가 오래 실행되지 않으면 간단한 작업에 적합합니다.

[Unit]
Description=Run foo

[Service]
User=%I
Restart=always
RestartSec=1800s
ExecStart=/bin/bash /home/user/script.sh

2
나는이 해결책을 좋아한다. 유일한 주요 단점은 자주 다시 시작하면 (예 : 30 초마다) "<서비스 X> 시작"로그로 시스템 로그가 넘치게됩니다. 이 시점에서 systemd에서 서비스를 계속해서 다시 시작하는 대신 서비스를 데몬으로 실행하는 것이 좋습니다.
저지 빈

사실입니다. 빠르고 간단한 것들을 위해 작동합니다. 그러나 타이머 또는 오래 실행되는 스크립트가 더 나은 솔루션입니다.
Matt H
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.