Ubuntu

apt-get purge 不適用於 cron

  • August 9, 2019

我看到 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 命令中添加一個,我什至可以讓這個腳本工作。

我在想有一些容易被我忽略的東西,但沒有什麼東西可以跳出來。

看看這篇文章中的答案;有人試圖apt-get upgrade從 cron 中創建一個並遇到類似的問題。

看來您需要設置 PATH 環境變數才能使 apt 工作。例如:PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

我在嘗試在 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 一起工作。

引用自:https://serverfault.com/questions/906835