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
Другие вопросы по тегам