Использование состояния 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
среда выглядит так. В целом, посмотрите на все ваши среды выполнения.