使用 crontab 下载更新

使用 crontab 下载更新

我正在尝试设置 crontab,以便它下载所有可用的软件包更新但不安装它们。不幸的是,它似乎没有运行。

我的 crontab 命令sudo crontab -e

1 */1 * * * sudo apt-get -d upgrade

这应该在每个小时的第一分钟出去并将所有可用的软件包下载到 /var/cache/apt/archives/。

当我从命令行手动运行该命令时,它按预期工作。

也许我使用 sudo 和 crontab 作为 root 时出了问题,我不知道。任何帮助都将不胜感激。

答案1

Apt 已经有此功能。

编辑文件/etc/apt/apt.conf.d/10periodic

找到条目:

APT::Periodic::Download-Upgradeable-Packages "0";

此条目告诉 apt 是否使用 apt 的--download-only选项下载新软件包。“0”表示该选项被禁用,因此 apt 将安装它下载的软件包。

将“0”更改为其他数字以启用--download-only。数字代表下载频率(以天为单位):1 表示每天,“2”表示每隔一天,“7”表示每周,等等。这些选项的文档位于文件中/usr/lib/apt/apt.systemd.daily

如果您想要提取所有可用软件包(而不仅仅是安全更新),那么您还必须对 进行小幅编辑/etc/apt/apt.conf.d/50unattended-upgrades。取消注释您想要包含的源。不建议对 PPA 和其他非 Ubuntu 软件这样做,但如果您想冒险,这很容易做到。

答案2

第一种方法,运行sudo crontab -e并添加/更改以下行:

1 * * * * /usr/bin/apt-get -d upgrade >/tmp/cronapt.log 2>&1

然后检查/tmp/cronapt.log错误。

第二种方法是将以下 shell 脚本放入/etc/cron.hourly文件夹中,并使其可执行并归 拥有root:root

#!/bin/bash

/usr/bin/apt-get -d upgrade

相关内容