@Bega

Не работает команда в bash скрипте, где ошибка?

Не запускается одна из команд в скрипте при постановке задачи в cron
00 09 * * * /mnt/pve/backups/sensors.sh >> /root/myscript.log 2>&1


sensors отрабатывает, hddtemp - нет

13-Oct-2021	09:00

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +29.0В°C  (high = +84.0В°C, crit = +100.0В°C)
Core 0:        +26.0В°C  (high = +84.0В°C, crit = +100.0В°C)
Core 1:        +26.0В°C  (high = +84.0В°C, crit = +100.0В°C)
Core 2:        +23.0В°C  (high = +84.0В°C, crit = +100.0В°C)
Core 3:        +23.0В°C  (high = +84.0В°C, crit = +100.0В°C)

acpitz-acpi-0
Adapter: ACPI interface
temp1:        +27.8В°C  (crit = +119.0В°C)
temp2:        +29.8В°C  (crit = +119.0В°C)


Ошибка в root/myscript.log
/mnt/pve/backups/sensors.sh: line 9: hddtemp: command not found


Сам скрипт
#!/bin/bash

date=`date +%d-%b-%Y%t%H:%M`

echo -e "\n$date\n" >> sensors.txt

sensors >> sensors.txt

hddtemp /dev/sda >> sensors.txt
hddtemp /dev/sdb >> sensors.txt
hddtemp /dev/sdc >> sensors.txt


Вывод PATH
spoiler
root@pve:~# type sensors
sensors is /usr/bin/sensors
root@pve:~# type hddtemp
hddtemp is hashed (/usr/sbin/hddtemp)
root@pve:~# $PATH
-bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
No such file or directory

При ручном запуске все работает. Что делаю не так?
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
hddtemp /dev/sda >> sensors.txt
hddtemp /dev/sdb >> sensors.txt
hddtemp /dev/sdc >> sensors.txt

Используйте полные пути к файлу hddtemp.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Смотреть PATH нужно не из вашей сессии, а прямо из cron.
Когда юзер логинится интерактивно, выполняются его персональные профайлы - .profile, .bashrc, .login и др.

Крон же просто запускает с правами указанного юзера, не читая его профайлы.

Варианты как это чинить:
1. Использовать в скриптах полные пути к файлам
2. Задать PATH прямо в вашем скрипте
3. Задать PATH в самом кронтаб вначале, например

PATH=$PATH:/home/user/mypersonalbin/
00 09 * * * /mnt/pve/backups/sensors.sh >> /root/myscript.log 2>&1


crontab формат позволяет задавать переменные, которые будут работать для всех скриптов запускаемых из вашего кронтаба.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы