Назад | Перейти на главную страницу

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.

Я думаю, что есть кое-что легкое, что я не замечаю, но на меня ничего не бросается.

Взгляните на ответ в эта почта; кто-то пытался сделать apt-get upgrade из cron и получил аналогичную проблему.

Кажется, что вам нужно настроить переменную среды PATH, чтобы она работала. Например: 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.