我知道在哪里可以设置频率,例如每周、每天等等,但不知道如何设置一天中的什么时间进行检查。
答案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 更新时间和频率的方法如下:
请勿编辑
/lib/systemd/system/apt-daily.timer
。每次更新软件包时,该文件都会被覆盖。相反,使用覆盖/etc 中的文件,并在 override 文件中进行更改。要恢复默认行为,只需删除 /etc 中的 override 文件即可
创建覆盖文件:
sudo cp /lib/systemd/system/apt-daily.timer /etc/systemd/system/apt-daily.timer
对覆盖文件进行更改。例如,将频率降低到每天一次,最好是在早上:
OnCalendar=*-*-* 6:00 RandomizedDelaySec=6h
注意:做个好邻居. 不要攻击不属于你的服务器。
更改默认设置可能会产生后果:您可能会减少收到安全补丁的频率。
测试您的更改。更改后的 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