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]セクションはありません。この機能はタイマーによって有効になるため、有効にする必要はありません。
他の例については、以下を確認してください。一流サービス/タイマーファイル。