O uso do estado hdparm no script funciona apenas manualmente e não pelo cron

0

Eu uso o seguinte se ... então teste em um script de desligamento automático que é iniciado a cada 15 minutos pelo cron.

# 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

Isso funciona bem se eu iniciar o script manualmente com ./autoshutdown.sh . O estado do disco será detectado corretamente.

Mas se o cron estiver iniciando este script e o estado não for detectado, a outra instrução será usada.

Por que essa diferença? E o que eu preciso mudar?

    
por MelBourbon 10.02.2018 / 17:03

1 resposta

1

Provavelmente porque seu $PATH difere em tarefas agendadas e não pode encontrar o hdparm. Especifique o caminho completo para hdparm , que você pode encontrar via type -p hdparm .

Sugiro também executar um trabalho cron como:

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

Para ver como é o seu ambiente cron . Mais geralmente, observe todos os seus ambientes de execução.

    
por waltinator 10.02.2018 / 19:23