시스템 타이머는 서비스가 중지된 경우에만 시작됩니다.

시스템 타이머는 서비스가 중지된 경우에만 시작됩니다.

Python 스크립트를 실행하는 서비스가 있습니다.

[Unit]
Description="Daily python service"

[Service]
WorkingDirectory=/home/ubuntu/python_project/
ExecStartPre=/bin/bash -c 'truncate -s 0 /var/log/project.log /var/log/project_error.log'
ExecStart=/home/ubuntu/.conda/envs/test/bin/python -u main.py
StandardOutput=append:/var/log/project.log
StandardError=append:/var/log/project_error.log

[Install]
WantedBy=multi-user.target

매일 특정 시간에 실행하고 싶습니다.

[Unit]
Description=Run service daily

[Timer]
OnCalendar=*-*-* 12:00:00
Persistent=true

[Install]
WantedBy=timers.target

데몬을 다시 로드하고 타이머를 활성화하고 타이머를 시작하면 첫날에 실행됩니다. 그러나 첫날 이후에는 서비스를 수동으로 중지하지 않는 한 자동으로 실행이 중지됩니다.

왜 이런 일이 발생합니까? 이 문제를 어떻게 해결할 수 있나요?

답변1

다음은 비슷한 작업을 수행하는 방법에 대한 예입니다. 이 예에서는 매시간 서비스를 호출하므로 필요에 따라 서비스를 조정합니다.

/etc/systemd/system/btrfsbk.service

[Unit]
Description=Create mirror of current state of all BTRFS snapshots

[Service]
Type=simple
ExecStart=/usr/local/sbin/btrfsbk

/etc/systemd/system/btrfsbk.timer

[Unit]
Description=Create mirror of current state of all BTRFS snapshots

[Timer]
Unit=btrfsbk.service
OnBootSec=15min
OnUnitActiveSec=60min
AccuracySec=1us
Persistent=True

[Install]
WantedBy=timers.target

내 .service 파일에는 [Install] 섹션이 없습니다. 이 기능은 타이머에 의해 활성화되므로 활성화할 필요가 없습니다.

다른 예를 보려면 다음을 확인하세요.퍼스트림서비스/타이머 파일.

관련 정보