apt-get purge 无法与 cron 配合使用

apt-get purge 无法与 cron 配合使用

我发现 cron 执行的脚本出现了一些奇怪的行为,我不太清楚到底发生了什么。该脚本看起来好像要删除软件包,但最后却挂起了,什么也没做。

这是 cronjob。

06 15 * * * root /myscript.sh > /tmp/script.log 2&>1

这是该脚本的(简化版本)。

#!/bin/bash

PACKAGES_TO_PURGE="htop"

if [ -n "$PACKAGES_TO_PURGE" ]; then
    echo "Purging $PACKAGES_TO_PURGE"
    echo
    #sudo apt-get purge -y $PACKAGES_TO_PURGE
    apt-get purge -y $PACKAGES_TO_PURGE
    echo "Done"
    echo
else
    echo "Nothing to purge"
fi

这是日志文件的输出。

0 upgraded, 0 newly installed, 1 to remove and 62 not upgraded.
After this operation, 188 kB disk space will be freed.
Done

手动运行这个脚本是可行的,我只在使用 cron 运行它时遇到问题,所以我不太清楚到底是怎么回事。

sudo如果我将apt-get 命令添加到其中,我甚至可以使该脚本运行。

我在想是不是我忽略了一些简单的事情,但却没有发现什么。

答案1

看看答案这个帖子;有人尝试从 cron 创建一个apt-get upgrade,但遇到了类似的问题。

看来您需要设置 PATH 环境变量才能使 apt 工作。例如:PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

答案2

我在尝试在 crontab 中运行脚本时遇到了类似的问题。我在脚本中使用 apt-get update 自动更新。我需要将使用命令 $PATH 找到的路径添加到我的脚本中:

    #!/bin/bash
    PATH=/usr/lib64/ccache:usr/local/bin:/bin:/usr/local/sbin:/usr/sbin:home/learner2/.local/bin:/home/learner2/bin
    apt-get -y update

之后我的脚本与 crontab 一起工作。

相关内容