systemd
이 실행되고 있지만 cron
이 아닌 내장 된 대상 환경 (호스트 작성 환경과 별도)이 있습니다.5 분마다 실행되는 cron 작업을 대체하기 위해 systemd를 어떻게 사용합니까?
또한 대부분의 시스템에서 5 분마다 실행하기 위해 cron
항목을 작성하는 스크립트가 있습니다.
서비스을 systemd
아래에 만드는 방법을 알고 있지만이 스크립트는 작업을 마친 후에 종료되는 원샷입니다. 내가 뭘하고 싶은지 그것은 부츠 (물론 syslog.target
이후)에서 실행 후 5 분마다.
[Unit]
Description=XYZZY
After=syslog.target
[Service]
Type=simple
ExecStart=/usr/bin/xyzzy.dash
과 동등한 /lib/systemd/system/xyzzy.timer
: 목표를 부팅 할 때
[Unit]
Description=XYZZY scheduler
[Timer]
OnBootSec=0min
OnUnitActiveSec=5min
[Install]
WantedBy=multi-user.target
, 타이머가 표시되지 않습니다
systemd
타이머에 최대 읽은 후, 나는 다음과 같은 서비스 파일이 /lib/systemd/system/xyzzy.service
입니다 생성 systemctl list-timers --all
의 출력에 포함되지 않으므로 시작하십시오. 타이머 장치를 수동으로 시작하는 것은 정상적으로 작동하는 것으로 보이지만 사용자 개입을 통해 자동으로 실행되어야합니다.
WantedBy
은 타이머 장치가 설치되어 실행되고 있는지 확인하여 주기적으로 서비스를 시작합니다. 그러나 multi-user.target.wants
디렉터리에 실제로 타이머에 대한 심볼 링크가없는 것으로 나타났습니다.
systemd
에서 어떻게 이루어 집니까? 당신이 실제로 그것을 활성화 할 때까지
때문이다. 'systemd'의 모든 목적이 시작 활동을 다루는 것이라면 수동으로 시작하거나 다른 * 부팅 시간 기능을 사용해야합니다. 아마 내가 질문에 명확하게하지 않았지만 대상 환경은 개발과 분리되어 있으므로 대상에 영향을 미치지 않을 것이므로 내 장치 상자에서 실행하는 것은 단순한 문제가 아닙니다. 내가해야 할 일은 부팅 후 타겟이 개입없이 이것을하는지 확인하는 것이다. 'systemd'는 풍부한 단위 파일들에 기초하여 이것을 자체적으로 수행하지 않는 것처럼 보입니다. – paxdiablo
시스템 문서에서 볼 수 있듯이,'enable' 부속 명령의 기능은 유닛 파일의'[Install]'섹션에서 명령을 실행하는 것입니다. 보통 이것은 부팅 할 때 자동으로 실행되도록 설정하는 것입니다. 유닛이 활성화되면 * 부팅 할 때마다 * 시작되며 수동 개입이 필요하지 않습니다. –
마크, 분명하지 않은지 확신 할 수 없습니다. 그것은'systemd'가 유닛 파일의 절 (stanza)을 사용하여 완벽하게 수행 할 수 있어야합니다. 부트 타임에 알려진 위치에서 이러한 단위 파일을로드하면 * 이와 같은 옵션은 다른 방법에 의존하기보다는 대상 시스템에서 매우 중요합니다. 'systemd'가 타겟 파일 시스템에서 심볼릭 링크를 만드는 것 이외에 이것을 할 수있는 방법이 없다는 것을 알 수 있습니다. 나는 당신의 대답을 부인하는 것이 아니라 단지 그것이 단점이라고 말했습니다. – paxdiablo