Скрипт KShell пропускает команды при планировании в cron
288
Weqaar Mohammed
У меня есть скрипт Kshell, который выполняет программу Java.
/path/to/java -jar jarfile.jar some parameters > log Same line 5 times with different parameters appending output to log file. cat log | mail -s email@email.com
Проблема, которую я продолжаю иметь, заключается в том, что когда я помещаю этот скрипт в cron, выполняется только последняя строка, которая принимает файлы журнала и отправляет электронную почту. Все вышеперечисленные фактические функционально необходимые строки игнорируются. Я получаю пустое письмо по расписанию cron, но сценарий должен занять около 1 часа.
Но когда я запускаю скрипт вручную, он работает нормально.
2 ответа на вопрос
1
Weqaar Mohammed
Я проверил почту cron на проблему. Для «невозможно получить доступ к jarfile.jar» я добавил полный путь в сценарий, а для «cat: 0652-050 Cannot open / path / to / log» я создал файл журнала перед использованием команды touch. Теперь мой сценарий выглядит следующим образом.
touch /path/to/log /path/to/java -jar /path/to/jarfile.jar some parameters > /path/to/log Same line 5 times with different parameters appending output to log file. cat /path/to/log | mail -s email@email.com
Я узнал, что абсолютный путь - это ключ, чтобы избежать подобных проблем.
0
Gombai Sándor
Это старая проблема "cron с очень простой средой". Когда вы запускаете скрипт в своей собственной оболочке, процессы, которые вы запускаете, находятся в среде, заданной вашими профилями. Тем не менее, ваши задания cron начинаются в очень простой среде, в которой отсутствуют куча переменных и информация о пути. На самом деле об этом можно догадаться, посмотрев в сообщениях cron о своих запусках или глобальный журнал демона cron.
Поскольку вы используете ksh, я предлагаю поискать .kshrc или .profile в начале скрипта:
. /home/yourid/.kshrc . /home/yourid/.profile
Спасибо, я буду иметь это в виду, но я решил проблему, указав полный путь к файлу jar и журналу. Я нашел проблему, посмотрев на почту cron.
Weqaar Mohammed 8 лет назад
0