AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[systemd-timers](server)

Martin Hope
Paul
Asked: 2021-10-09 06:46:54 +0800 CST

为什么我的 systemd 计时器仅在单位为目标时触发一次?

  • 4

我有几个服务(静态站点生成器),我想从同一个 systemd 计时器定期触发。我找到了这个问题/答案,它完全涵盖了我想要做的事情,并描述了一个设置,其中多个服务的.target文件Wants=由相应的计时器触发。这听起来不错,但我发现当我实际设置它时,它只会触发一次,然后自行禁用!

我准备了一个最小的工作示例(这不会触发多个服务,但演示了相同的问题):

test-timer.timer:

[Unit]
Description=A test timer

[Timer]
OnCalendar=*-*-* *:*:30
Unit=test-timer.target

[Install]
WantedBy=timers.target

test-timer.target:

[Unit]
Description=Target unit
Wants=test-timer.service
After=test-timer.service

[Install]
WantedBy=timers.target

test-timer.service:

[Unit]
Description=Run test

[Service]
ExecStart=/usr/bin/bash -c "date --rfc-3339='seconds' >> /tmp/test-timer-output"

[Install]
Also=test-timer.target

启用计时器:

$ sudo cp test-timer.* /etc/systemd/system/
$ sudo systemctl enable --now test-timer.timer
Created symlink /etc/systemd/system/timers.target.wants/test-timer.timer → /etc/systemd/system/test-timer.timer.

然后,当我查看 的输出时systemctl list-timers --all,在第一次运行之前我得到(忽略其他计时器):

NEXT                        LEFT       LAST     PASSED       UNIT                ACTIVATES
Fri 2021-10-08 10:38:30 EDT 21s left   n/a      n/a          test-timer.timer    test-timer.target

第一次运行后,NEXT已LEFT替换为n/a:

NEXT     LEFT    LAST                        PASSED        UNIT                  ACTIVATES
n/a      n/a     Fri 2021-10-08 10:38:32 EDT 1min 5s ago   test-timer.timer      test-timer.target

我也尝试过添加Persistent=true和test-timer.target明确启用test-timer.target,但这些都不起作用。任何时候我这样做systemctl restart test-timer.timer,它都会重新启动,但只会触发一次运行,然后再也不会运行。

Unit=如果我通过更改 to 的行test-timer.timer来移除间接层Unit=test-timer.service,该服务会像预期的那样每分钟愉快地触发自己。

我是否缺少一些配置或安装步骤?

systemd systemd-timers
  • 1 个回答
  • 788 Views
Martin Hope
Amandasaurus
Asked: 2021-06-23 01:14:41 +0800 CST

添加系统计时器的一次性触发

  • 1

我有一个 systemd 计时器,它在星期五的 23:00 运行,以便在低需求时间每周进行一次批量数据处理。现在是星期二,我想测试我所做的更改,我希望它在今天 23:00 开始,这样我明天就可以检查它,而不必等到下周一。

是否有一种简单的内置方式来安排一次性触发 systemd 计时器?例如systemd trigger-timer --timer whatever.timer --at 2021-06-22T23:00或什么?我希望它只在此时开始,我不想添加新的重复规则。我希望它在每周五 23:00 和今天 23:00 正常运行。

我确信我可以将某些东西与文件一起破解,sleep 10hr ; systemctl start whatever.service或者手动编辑/etc/systemd/system/whatever.timer文件,但如果有一种正确的方法可以“一次性”触发计时器,我更愿意使用它。

这是在 Ubuntu Linux 20.04 和 18.04 上,无论是什么版本的 systemd(245?)

systemd systemd-timers
  • 2 个回答
  • 1176 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve