crontab не может найти скрипт
У меня есть работа 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
3 ответа
Оказывается, это было связано с ecryptfs и наличием зашифрованного домашнего каталога. Поведение "на первый взгляд случайное" было вызвано активным сеансом SSH, когда мой пользователь вошел в систему. Во время входа в систему cron смог прочитать мой домашний каталог, потому что он был смонтирован и расшифрован. При выходе из системы сценарий недоступен. Спасибо за все полезные предложения.
Все сценарии оболочки должны начинаться со следующей строки #!/bin/bash
(заменить bash
с какой бы оболочкой вы не пользовались
Делать:
whereis sh
получить кратчайший путь, например /bin/sh
и измените свою работу в crontab на:
0 1 * * * /bin/sh /home/username/diskreport.sh