Использование состояния hdparm в скрипте работает только вручную, а не cron

Я использую следующее, если... тогда тестирую скрипт автоматического выключения, который запускается cron каждые 15 минут.

# Check if disk1 is currently spinning
    if [ "$(hdparm -C /dev/sdb1 | grep -o "active/idle\|standby")" = "active/i$
            logit disk1 running, auto shutdown terminated
            return 1

Это прекрасно работает, если я запускаю скрипт вручную ./autoshutdown.sh, Состояние диска будет определено правильно.

Но если cron запускает этот скрипт и состояние не обнаружено, используется оператор else.

Почему эта разница? И что мне нужно изменить?

1 ответ

Решение

Наверное, потому что ваш $PATH отличается работой cron и не может найти hdparm. Укажите весь путь к hdparm, который вы можете найти через type -p hdparm,

Я также предлагаю запустить cron работа как:

env | sort >$HOME/cron.env
echo $PATH | tr ':' "\n" >$HOME/cron.path

Чтобы увидеть, что ваш cron среда выглядит так. В целом, посмотрите на все ваши среды выполнения.

Другие вопросы по тегам