У меня есть задание cron, которое запускается под моим пользователем один раз за ночь. Я установил его с помощью crontab -e и a, добавив строку:
0 1 * * * /home/username/diskreport.sh
Crontab настроен так, что он отправляет мне результат по электронной почте. По-видимому, случайно я получаю электронное письмо от Cron Daemon, в котором говорится, что сценарий не найден (в отличие от вывода diskreport.sh).
/bin/sh: 1: /home/username/diskreport.sh: not found
У меня была ошибка в начале скрипта, которую я исправил, но это не мешало запуску скрипта. Он отлично работает как под sh, так и под bash:
#~/bin/bash
Оказывается, это было связано с ecryptfs и наличием зашифрованного домашнего каталога. «На вид случайное» поведение было вызвано активным сеансом SSH, в котором мой пользователь вошел в систему. Во время входа в систему cron смог прочитать мой домашний каталог, потому что он был смонтирован и расшифрован. Пока вы вышли из системы, сценарий недоступен. Спасибо за все полезные предложения.
Делать:
whereis sh
получить кратчайший путь, например /bin/sh
и измените свою работу crontab на:
0 1 * * * /bin/sh /home/username/diskreport.sh
все сценарии оболочки должны начинаться с / следующей строки #!/bin/bash
(заменить bash
с / какой бы оболочкой вы ни использовали