Я использую следующее, если... затем тестируют в автоматическом сценарии завершения работы, который запускается каждые 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
. Дисковое состояние будет обнаружено правильно.
Но если крон запускает этот сценарий, и состояние еще не обнаруживается, оператор используется.
Почему это различие? И что я должен изменить?
Вероятно, потому что Ваш $PATH
отличается по заданиям крона, и это не может найти hdparm. Укажите целый путь к hdparm
, через который можно найти type -p hdparm
.
Я также предлагаю выполнить a cron
задание как:
env | sort >$HOME/cron.env
echo $PATH | tr ':' "\n" >$HOME/cron.path
Видеть что Ваш cron
среда похожа. В более общем плане посмотрите на все свои среды выполнения.