#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