История:
Ночью запускается сервер 1С, выполняется регламентное задание. Регламентное задание оставляет за собой логи в файле в кодировке ANSI. Этот лог забирается, конвертится, кладется в файл conv.txt.
Далее файл парсится grep'ом и как только в логе появляется фраза "Завершение обмена", сервер 1С (сервис) надо погасить (если дело происходит до 7 утра).
Для этого был написан простенький скрипт (с ним проблем нет):
#!/bin/bash
# Текущее время
var_time=`date`
var_hour=`date +%H`
# Час, до которого необходимо выполнять скрипт (обычно 7 утра, т.к. в 7.30 стартует сервер 1С)
dead_hour=21
a=/home/usr1cv8/1c_exchange_logs/reports/Exchange_\(95с1\)
b=`date '+%Y-%m-%d'`
# Входной файл
last_file=$a$b.txt
# Жестко заданный выходной файл конвертированный
conv=$HOME/conv.txt
# Файл логов
log_file=$HOME/shell_logs.txt
# Пишем в лог информацию о запуске скрипта
echo "---------------------------------------------------------"
echo "Скрипт запущен `date +%Y-%m-%d` в `date +%T`"
#echo "Скрипт запущен `date +%Y-%m-%d` в `date +%T`" >> $log_file
if [ -e $last_file ]
then
echo "Файл $last_file существует, запускаем его конвертацию"
iconv -f cp1251 -t utf8 $last_file -o $conv
echo "Файл сконвертирован"
else
echo "Файл $last_file отсутствует."
fi
# Считаем в переменную, сколько совпадений найдено grep'ом
var_grep=`grep -c "Завершение обмена" $conv`
# Если в grep'ом найдено больше нуля совпадений и время меньше чем 7.20 утра, то глушим сервер и делаем об этом запись в лог-файл
if [ $var_grep -gt 0 ]
then
echo "В файле $last_file найдено \"Завершение обмена\" $var_grep раз."
echo "Запускаем проверку времени"
if [ $var_hour -le $dead_hour ]
then
echo "Время меньше 7 утра"
echo "Останавливаем сервер 1С"
sudo service srv1cv83v18-1334 stop
else
echo "Время больше 7 утра"
echo "Сервер 1С остановлен не будет"
fi
else
echo "В файле $last_file не найдено \"Завершение обмена\""
fi
echo "---------------------------------------------------------"
Проблема:
Скрипт не работает на cron'e.
Если я его запускаю сам, типа:
sh script.sh
- все прекрасно работает.
Но в какой крон я его не добавлял, никак оно не хочет работать.
Добавлял его в:
crontab -e
sudo crontab -e
/etc/crontab
Прописывал его в них как:
1 * * * * root /home/user/script.sh
1 * * * * /home/user/script.sh
1 * * * * sudo /home/user/script.sh
1 * * * * sh /home/user/script.sh
И так далее. Ничего не работало.
Напрямую cron сервис и запускает и тормозит. В составе скрипта - никак.
Система:
18.04.1-Ubuntu