#linux
#linux
Вопрос:
У меня есть скрипт, который проверяет размер файла журнала. если размер файла журнала (добавляемые журналы) увеличивается, то он ничего не делает, но если он не увеличивается, тогда он что-то говорит или отправляет мне sms.
Логика такова: этот файл запускается на crontab каждые 3 минуты каждый день с 08 утра до 10 вечера.
1) ночью в 00 часов msize.txt файл будет 00 2) утром в 08 часов переменная размера считывает данные из msize.txt файл и сравните с переменной size2, если size2 меньше или равен size, тогда я должен сделать SMS. переменная size2 извлекает размер файла этого файла журнала в скрипте . и после завершения значение переменной size2 записывается в msize.txt файл….
Что происходит, когда я запускаю этот скрипт вручную, он ок msize.txt является ли изменение, но в crontab msize.txt не модифицируется и не создается….
Скрипт:——
dt=`date %H`
if [ $dt -eq 00 ]
then
echo $dt > msize.txt
fi
size=`cat msize.txt`
#echo $size
size2=`du /pretupsvar/pretups_smsrlogs/messageSentLog.log| awk '{print $1}'`
name=`uname -n`
if [ $size2 -le $size ]
then
Do Somthing
#echo "not happen"
fi
echo $size2 > msize.txt
Пожалуйста, помогите мне как можно скорее
Комментарии:
1. Можете ли вы опубликовать соответствующую строку crontab?
Ответ №1:
Предполагается, что скрипт msize.txt
находится в текущем рабочем каталоге. Когда вы запускаете скрипт вручную, предположительно, текущий рабочий каталог находится там, где находится этот файл. Однако, когда скрипт запускается из cron, рабочий каталог является вашим домашним каталогом. Вам нужно использовать полный путь к этому файлу или cd
команду в скрипте, чтобы соответствующим образом установить рабочий каталог.
Комментарии:
1. Чтобы выразить благодарность на SO, принято голосовать за полезные ответы и «принимать» правильный ответ…
Ответ №2:
Если вы запускаете этот скрипт из crontab только между 08:00 и 22:00, код в:
if [ $dt -eq 00 ]
then
echo $dt > msize.txt
fi
никогда не будет запущен?