我有一个运行 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] 部分;无需启用此功能,因为它将由计时器激活。
对于另一个例子,请查看弗斯特里姆服务/计时器文件。