Кронтаб, не удается выполнить весь сценарий

#shell #ubuntu #cron

#ракушка #ubuntu #крон

Вопрос:

Мне нужно ежедневно запускать сценарий оболочки, который содержит этапы прогнозирования исследований погоды в модели. Для этого я использовал cron. Первый исполняемый файл скрипта (ungrib.exe) работает идеально, но второй исполняемый файл «metgrid.exe» это совсем не работает. Когда я запускаю скрипт в терминале linux, он работает отлично.

Это пример (обобщенный) моего сценария:

 #!/bin/bash bash ./link_grib.csh /home/user/WRF/GFS/ ./ungrib.exe ln -s metgrid/METGRID.TBL.ARW ./METGRID.TBL ./metgrid.exe lt;- not running with crontab  

Способ, которым я настраиваю свой кронтаб, таков:

 crontab -e  SHELL=/bin/sh  00 01 * * * /home/user/WRF/scripts/WRF_scripts.sh  

Есть идеи?

Комментарии:

1. Все пути с префиксом . относятся к текущему каталогу. Вы должны указать правильный каталог cd или использовать полные пути. Также #SCRIPTSDIR это комментарий, вы имеете в виду $SCRIPTSDIR ? Если это так, задания cron выполняются в минимальной среде, поэтому вам нужно будет явно задать SCRIPTSDIR=/path/to/scriptsdir .

2. Хорошо, но почему правильно берется каждая строка сценария, кроме последней? каждая строка выполняется нормально, но только ./metgrid.exe не выполняется. Я проверил, указав весь путь к этому файлу, и это то же самое, ничего не происходит.

3. Комментарий был сделан специально, да, мне пришлось удалить его из примера

4. В чем заключается сообщение об ошибке? Если нет сообщения об ошибке, почему вы думаете, что он не работает? Все ли программы находятся в домашнем каталоге пользователя? bash само по себе, вероятно, там быть не должно. Если это WSL или cygwin, следите за проблемами, вызванными окончаниями строк CRLF во входных данных.

5. Проблема была с переменными Кронтаба. Мне пришлось добавить LD_LIBRARY_PATH несколько путей, и теперь все работает нормально.

Ответ №1:

Я добавил в свой кронтаб полный путь к библиотекам, связанным с выполнением WRF.

 LD_LIBRARY_PATH=$LD_LIBRARY_PATH