debian 用cron指定时间安装一个软件总是失败

27 16 * * * apt-get -y install gparted
格式不知道对不对
好像要用绝对目录,比如reboot要换成/sbin/reboot,这样才会执行,apt-get不知道放在哪个目录了?

  1. 用 which 查找命令的绝对路径
  2. 建议用 apt 代替 apt-get
  3. 直接改用 /usr/bin/apt 就好

come from telegram group

试了一下,还是不行啊,不知道哪里出问题了

检查一下日志,看看是命令执行出错,还是 cron 根本没有执行

在 crontab 里设定一下 PATH
如果您捕捉 stdout, stderr 您可能会发现是 PATH 问题

用reboot和shutdown的绝对路径是正常执行的,是不是apt命令不能通过cron来执行,要通过别的方式呢?

百度找到系统自动更新的方式 aptitude install unattended-upgrades apt-listchanges -y
在 Debian/Ubuntu 上配置自动安全更新

首先,安装下面这些安装包:

# aptitude update -y && aptitude install unattended-upgrades apt-listchanges -y

apt-listchanges 将会通知你在升级过程中发生的改变。接下来,用你最喜欢的文本编辑器打开 /etc/apt/apt.conf.d/50unattended-upgrades,然后在 Unattended-Upgrade::Origins-Pattern块中间加入下面这行内容:

# aptitude update -y && aptitude install unattended-upgrades apt-listchanges -y

最后,执行下面的命令来生成所需的配置文件(/etc/apt/apt.conf.d/20auto-upgrades),从而激活自动更新:

# dpkg-reconfigure -plow unattended-upgrades

当提示安装自动升级时,选择 ‘Yes’:

Debian及其衍生版自动更新安全的解决办法!Debian及其衍生版自动更新安全的解决办法!

然后检查下面这两行是否已经加入到文件/etc/apt/apt.conf.d/20auto-upgrades中了:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

增加下面这行内容使通知更加详细:

APT::Periodic::Verbose "2";

最后,检查/etc/apt/listchanges.conf来确保通知能被发送给 root 用户。

Debian及其衍生版自动更新安全的解决办法!Debian及其衍生版自动更新安全的解决办法!

在这篇文章中,我们讨论了如何确保你的系统定期更新最新的安全补丁。另外,你也学习了如何设置提示,从而确保应用了新的补丁时你能够被通知到。

退而求其次了

把/etc/crontab文件里环境变量PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 粘贴进了 crontab -e 里面了,再指定时间执行apt install -y gparted这样的命令,就可以了,apt命令前面不用加绝对路径都可以定时执行。crontab -e这是用户级的,后来直接在系统级的文件/etc/crontab直接编辑,输入制定时间和命令就可以定时执行。谢谢了,又学了一个知识点。