有没有办法可以改变更新管理器检查更新的时间?

有没有办法可以改变更新管理器检查更新的时间?

我知道在哪里可以设置频率,例如每周、每天等等,但不知道如何设置一天中的什么时间进行检查。

答案1

仅限 Ubuntu 18.04 及更早版本:

Apt 更新由名为 的脚本触发/etc/cron.daily/apt/etc/cron.daily包含多个每天同时发生的脚本。为了更改 Update Manager 更新的时间,您需要更改所有脚本/etc/cron.daily触发的时间。

为此,您需要编辑/etc/crontab文件:

sudoedit /etc/crontab # or: gksu gedit /etc/crontab

这是一个相当标准的cron文件,看起来应该有点像这样:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

从中我们可以看到cron.daily触发器在早上 6:25。如果你想在早上 4 点启动它,你可以将第二行替换为:

0 4    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

如果你需要更多有关格式的帮助,维基百科有一个关于 Cron 的异常技术页面

答案2

谢谢大家。Amber 代表我问了这个问题,因为我在 loco 团队 IRC 频道问过一个问题。我认为这是一个 cron 作业,并且一直在研究它们 (/etc/cron.*),试图自己解决这个问题。所以现在当我在看早间新闻视频时,我不会看到 CPU 使用率飙升。

时间似乎确实有一个小时的偏移。我怀疑这是由于夏令时造成的。这是今天早上的片段。

Apr 21 07:30:01 flounder CRON[21032]: (root) CMD (start -q anacron || :)
Apr 21 07:30:01 flounder anacron[21035]: Anacron 2.3 started on 2011-04-21
Apr 21 07:30:01 flounder anacron[21035]: Will run job `cron.daily' in 5 min.
Apr 21 07:30:01 flounder anacron[21035]: Will run job `cron.weekly' in 10 min.
Apr 21 07:30:01 flounder anacron[21035]: Jobs will be executed sequentially
Apr 21 07:35:01 flounder anacron[21035]: Job `cron.daily' started

标记此已解决。

答案3

在 Ubuntu 系统 20.04 及更新版本中,每日 apt 更新由 systemd 计时器(不再是 cronjob)处理。

$ systemctl list-timers | grep apt-daily.timer
Tue 2023-03-21 14:53:37 CDT 1h 38min left      Mon 2023-03-20 14:24:10 CDT 22h ago      apt-daily.timer                apt-daily.service

让我们分析一下:

Tue 2023-03-21 14:53:37 CDT 1h 38min left -- when it will run next
Mon 2023-03-20 14:24:10 CDT 22h ago       -- when it last ran
apt-daily.timer                           -- the timer name
apt-daily.service                         -- the service triggered by the timer

嗯。这些作业的间隔并不正好是 24 小时。让我们看看实际的计时器文件来找出原因。它位于/lib/systemd/system/apt-daily.timer

[Unit]
Description=Daily apt download activities

[Timer]
OnCalendar=*-*-* 6,18:00
RandomizedDelaySec=12h
Persistent=true

[Install]
WantedBy=timers.target

此文件中有一些重大新闻!

OnCalendar=*-*-* 6,18:00  -- It runs TWICE each day
RandomizedDelaySec=12h    -- It never runs at the same time. Random delay of up to 12 hours.

所以现在我们知道为什么更新似乎是随机的,并且我们知道如果我们希望 apt-update 在特定时间运行,或者更频繁/更少地运行,需要更改哪些设置。

自定义每日 apt 更新时间和频率的方法如下:

  1. 请勿编辑/lib/systemd/system/apt-daily.timer。每次更新软件包时,该文件都会被覆盖。

    相反,使用覆盖/etc 中的文件,并在 override 文件中进行更改。要恢复默认行为,只需删除 /etc 中的 override 文件即可

    创建覆盖文件:sudo cp /lib/systemd/system/apt-daily.timer /etc/systemd/system/apt-daily.timer

  2. 对覆盖文件进行更改。例如,将频率降低到每天一次,最好是在早上:

    OnCalendar=*-*-* 6:00
    RandomizedDelaySec=6h
    

    注意:做个好邻居. 不要攻击不属于你的服务器。

    更改默认设置可能会产生后果:您可能会减少收到安全补丁的频率。

  3. 测试您的更改。更改后的 apt-daily 定时器按计划运行后,测试它是否成功运行。该服务运行时会更新此文件中的时间戳:

    $ ls -l /var/lib/apt/periodic/update-success-stamp
    -rw-r--r-- 1 root root 0 Mar 21 10:46 update-success-stamp
    

相关内容