Назад | Перейти на главную страницу

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

Оказывается, это было связано с ecryptfs и наличием зашифрованного домашнего каталога. «На вид случайное» поведение было вызвано активным сеансом SSH, в котором мой пользователь вошел в систему. Во время входа в систему cron смог прочитать мой домашний каталог, потому что он был смонтирован и расшифрован. Пока вы вышли из системы, сценарий недоступен. Спасибо за все полезные предложения.

Делать:

 whereis sh

получить кратчайший путь, например /bin/sh и измените свою работу crontab на:

0   1   *   *   *    /bin/sh    /home/username/diskreport.sh

все сценарии оболочки должны начинаться с / следующей строки #!/bin/bash (заменить bash с / какой бы оболочкой вы ни использовали