Простой скрипт bash не работает при установке на Crontab [дубликат]

На этот вопрос уже есть ответ здесь:

РЕДАКТИРОВАТЬ: Мой сценарий находится в папке $ HOME. Это и есть причина проблемы. Подробности в конце вопроса. В любом случае, это не повторяющийся вопрос!

У меня есть довольно тривиальный сценарий, удаляющий некоторые файлы журналов. Отлично работает из командной строки. Однако, если я устанавливаю его на crontab, время от времени я получаю

/ bin / sh: 1: $ MyScript. sh: not found

Я подумал, что это может быть связано с конфигурацией crontab, поэтому я установил его в crontab специально для моего пользователя через

sudo vi /etc/crontab

К сожалению, я все еще периодически получаю ту же ошибку. Ниже мой сценарий .

#!/bin/sh
NOW=$(date +"%m-%d-%Y-%T")
echo "$NOW Starting deleting of  log files"
find /$PATH_TO_DIR/logs/* -mtime +30 -type f -delete

if [ $? -eq 0 ]
then
 echo "$NOW Successfully deleted files"
else
 echo "$NOW Could not delete files"
fi

Любая помощь приветствуется.

РЕДАКТИРОВАТЬ: Проблема заключалась в том, что моя домашняя папка была зашифрована. Вот почему она периодически работала, только когда я был авторизован в терминале. (Затем домашняя папка расшифровывается, и мой скрипт обнаруживается). Поэтому я переместил свой сценарий в другое место, и он начал работать.

-1
задан 5 December 2017 в 12:00
1 ответ

Есть несколько проблем:

crontabs (будь то crontab -e или файлы в /etc/cron.d указаны следующим образом:

17 *    * * *   root    /usr/local/bin/script.sh

Этот пример запускается на 17-й минуте каждого часа с правами root.

Однако вы можете поместить нормальные сценарии в /etc/cron.daily/ (или еженедельно, ежемесячно, ежечасно) . Примечание: не помещайте . в имя файла, тогда оно будет пропущено.

Ваш скрипт также ссылается на неопределенные переменные. Это приведет к пути / logs / * , потому что $ PATH_TO_DIR оценивается как пустой. Вы можете исправить это, запустив set -u где-нибудь в начале вашего скрипта (отказ от ответственности: я не знаю, как Оболочки bash справляются с этим).

Я также думаю, что нам не хватает информации, потому что я не вижу никаких ссылок на $ MyScript

0
ответ дан 5 December 2019 в 20:22

Теги

Похожие вопросы