标签: systemd-timer

如何自动启动用户 systemd.timer (s)?

我已经设置了几个用户 systemd.timer(s)。

如何让它们自动启动?(在系统启动时或用户登录到 X 会话时)。

在我重新启动系统后(甚至systemctl --user enable在重新启动之前运行,即没有帮助)我没有运行:

~$ systemctl --user enable {rsync_backup1,rsync_another_backup}.timer 
~$ systemctl --user list-timers --all
0 timers listed.
Run Code Online (Sandbox Code Playgroud)

在这里,我需要使用以下命令来启动它们:

~$ systemctl --user start {rsync_backup1,rsync_another_backup}.timer           
~$ systemctl --user list-timers --all
NEXT                          LEFT         LAST                          PASSED UNIT                          
Sun 2016-07-31 13:26:45 CEST  1h 16min ago Sun 2016-07-31 14:43:32 CEST  2s ago rsync_backup1
Sun 2016-07-31 13:26:45 CEST  1h 16min ago Sun 2016-07-31 14:43:32 CEST  2s ago rsync_another_backup

2 timers listed.
~$ 
Run Code Online (Sandbox Code Playgroud)

以下是当前如何配置计时器的示例:

$HOME/.config/systemd/user/rsync_backup1.service :

[Unit]
Description=rsync --delete /home/USER data to …
Run Code Online (Sandbox Code Playgroud)

configuration systemd-timer

7
推荐指数
1
解决办法
5947
查看次数

删除使用“systemd-run --on-calendar”创建的计时器

我创建使用systemd工作systemd-run --on-calendar ....现在,我已经适当取代它.timer.service文件,但我不能删除旧的。我可以停止并禁用它,但是当我调用systemctl list-timers它时,它仍然显示为任意名称run-r0d0dc22...。我也找过它的.timer文件,但找不到。

systemd systemd-timer

7
推荐指数
1
解决办法
4638
查看次数

我正在写一个 systemd 计时器。我应该为 WantedBy 使用什么值?

在各种示例中,我看到了所有这些不同的选择建议:

  • WantedBy=timers.target
  • WantedBy=multi-user.target
  • WantedBy=basic.target
  • WantedBy=default.target
  • WantedBy=mytimer.target(自定义用户定义名称)

然而,在我发现的例子中,没有提供进一步的解释。

以下页面也没有提供任何对 WantedBy 的解释:

我想了解一种简单的方法,我可以在需要时使用它来编写 systemd 计时器而不是 cron 作业。

*设置一个 cron 作业是 1 行。Systemd 计时器涉及写入两个文件并运行一两个 systemctl 命令。但是,根据我的经验,仅凭这一事实并不一定是使 systemd 计时器比 cron 更难的原因——这是众多选项和(似乎)缺乏清晰的文档以及完整解释的简单示例的原因。

systemd-timer

7
推荐指数
1
解决办法
5408
查看次数

如何编辑 systemd-tmpfiles-clean 的计时器?

我正在尝试将 Apache PrivateTmp 文件的清理间隔从默认的 30 天更改为 6 小时。我读到它来编辑时间间隔,我应该在/etc/tmpfiles.d/tmp.conf而不是编辑中设置一个覆盖文件/usr/lib/tmpfiles.d/tmp.conf,所以我用以下几行创建了该文件:

# override the default cleanup intervals
v /tmp 1777 root root 6h
v /var/tmp 1777 root root 6h
Run Code Online (Sandbox Code Playgroud)

现在,如果我运行systemd-tmpfiles --clean,预期的文件将被删除,所以这部分工作正常。

但是,/usr/lib/systemd/system/systemd-tmpfiles-clean.timer已经OnUnitActiveSec设置为1d。我认为这意味着我 6 小时的清理间隔将有效地限制为每天一次。

我可以将该计时器间隔更改为 6 小时或更短,但是我应该直接编辑此文件,还是创建类似于/etc/tmpfiles.d?

更新:这个问题被标记为重复,但我在链接的问题中没有看到任何关于我是否应该像文件一样使用覆盖文件的tmp.conf内容。

解决方案:显然我无法将此作为答案发布,因为该问题已被标记为重复。但这就是我创建覆盖文件来更改计时器间隔的方式:

将现有的计时器文件复制到相应的覆盖目录:

sudo cp /usr/lib/systemd/system/systemd-tmpfiles-clean.timer /etc/systemd/system

编辑新副本(将 1d 值更改为 1h):

sudo nano /etc/systemd/system/systemd-tmpfiles-clean.timer

加载新的计时器文件:

sudo systemctl daemon-reload

确认已加载新的计时器间隔:

sudo systemctl list-timers

tmp systemd-timer

7
推荐指数
1
解决办法
5875
查看次数

挂起时过期的系统计时器

我创建了一个 systemd 用户计时器,该计时器每天到期,即午夜。问题是我的电脑通常在晚上暂停。当我早上醒来时,我希望计时器触发,但这并没有发生。我发现了 Persistent 选项,但这仅在系统断电时才有用,因为它在启动服务时会触发过期的计时器。除了例如运行每小时计时器并将时间戳保存到某个文件之外,还有其他解决方案吗?

编辑 2017-03-17:我在 ubuntu 16.10 上使用 systemd 231。我想要的是每天运行一次提醒,最好是在我早上醒来电脑时。

suspend systemd systemd-timer

6
推荐指数
1
解决办法
1171
查看次数

systemd 计时器已启用但状态为非活动状态

如何让下面的定时器自动启动?现在计时器只有在我这样做时才起作用systemctl start while-test.timer。否则,即使我启用了计时器,它也不会自动启动。即使在执行systemctl daemon-reload或重新启动之后。

while-test .service
-------------------
[Unit]
Description=While loop test script

[Service]
Type=simple
ExecStart=/home/user/bash/while-test.sh

[Install]
WantedBy=default.target
Run Code Online (Sandbox Code Playgroud)

while-test .timer
----------------
[Unit]
Description=While loop test script timer

[Timer]
OnCalendar=Mon *-*-* 10:52:00
Unit=while-test.service

[Install]
WantedBy=default.service
Run Code Online (Sandbox Code Playgroud)

systemd systemd-timer

6
推荐指数
1
解决办法
5722
查看次数

systemd 计时器在每小时 30 分钟后每 2 小时执行一次?

有几个关于systemd定时器的很好的参考资料,包括这个:

systemd.time

不幸的是,我仍然不清楚如何创建一个定期运行的计时器,但在每小时结束后的特定分钟数内运行。

我想创建一个计时器,每 2 小时运行 30 分钟。因此它将在 14:30(下午 2:30)、16:30、18:30、20:30 等运行。

我尝试了几件不起作用的事情,包括:

OnCalendar=*-*-* *00/2:30
Run Code Online (Sandbox Code Playgroud)

和这个:

OnCalendar=*-*-* *:00/2:30
Run Code Online (Sandbox Code Playgroud)

我没有找到产生所需结果的时间规范。

此外,它不必在那一刻完全运行,所以我正在考虑使用:

AccuracySec=5m
Run Code Online (Sandbox Code Playgroud)

systemd systemd-timer

6
推荐指数
2
解决办法
1万
查看次数

防止 systemd 计时器在按流量计费的连接上运行

我有一个 systemd 计时器,每 10 分钟运行一次,用于下载我的电子邮件offlineimap。问题是我有时会收到大量邮件或大附件,同时我可能正在路上使用我的手机\xe2\x80\x99s 按流量计费的连接。

\n\n

现在我有一个自定义脚本,用于查询当前活动的连接nmcli并检查它是否是计量连接。offlineimap如果是这样,它根本不会运行。

\n\n

我的问题是,systemd 计时器可以做同样的事情吗?沿着这些思路:

\n\n
[Timer]\nOnUnitInactiveSec=10m\nRunOnMetered=no\n
Run Code Online (Sandbox Code Playgroud)\n

systemd systemd-timer

6
推荐指数
1
解决办法
302
查看次数

暂时停止所有 systemd 计时器单元

我正在编写一个脚本来准备我的 Linux 系统进行基准测试。除其他事项外,我想停止所有 systemd 计时器单元,然后恢复此操作。

简而言之,我需要相当于 service crond stop/start.

到目前为止我所发现的只是systemctl list-timers然后手动停止每个,然后手动启动每个。你知道任何更好、更通用的解决方案吗?

systemd systemd-timer

5
推荐指数
1
解决办法
1721
查看次数

系统定时器不会触发

我有一个计时器,字面上是这样的:

foob​​ar.service:

[Unit]
Description=Timer Test
Requires=rsyslog.service      # rsyslog is an active local service.

[Service]
Type=simple
ExecStart=/usr/bin/logger "Running foobar timer test!"
Run Code Online (Sandbox Code Playgroud)

foob​​ar.timer:

[Unit]
Description=Test Timer

[Timer]
OnCalendar=10:00              # See below about the time.
Unit=foobar.service
RemainAfterElapse=no

[Install]
WantedBy=timers.target
Run Code Online (Sandbox Code Playgroud)

我通过在未来 10 分钟内安装它 ( systemctl enable foobar.timer) 来测试它OnCalendar。但是,它不会运行,并且:

> systemctl status foobar.timer
? foobar.timer - Local Daily Tasks Timer
   Loaded: loaded (/etc/systemd/system/what.timer; enabled; vendor preset: enabled)
   Active: inactive (dead)
  Trigger: n/a
Run Code Online (Sandbox Code Playgroud)

它声称已加载并启用,但不活动(已死)。这尤其令人困惑,因为我已经按照这种模式编写了其他计时器并且它们都可以工作...o_O?

除了重新启动系统(我不喜欢这样做,它是一个活动服务器)之外,我已经完成了所有工作。

systemd systemd-timer

5
推荐指数
1
解决办法
1630
查看次数

标签 统计

systemd-timer ×10

systemd ×7

configuration ×1

suspend ×1

tmp ×1