【发布时间】:2022-01-04 04:42:24
【问题描述】:
我需要每天运行一个 shell 脚本,其中包含模型 Weather Research Forecasting 的步骤。我为此使用了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 <- not running with crontab
我配置 crontab 的方式是:
crontab -e
SHELL=/bin/sh
00 01 * * * /home/user/WRF/scripts/WRF_scripts.sh
有什么想法吗?
【问题讨论】:
-
所有以
.为前缀的路径都指向当前目录。您应该使用cd设置正确的目录,或使用完整路径。还有#SCRIPTSDIR是评论,你的意思是$SCRIPTSDIR?如果是这样,cron 作业在最小环境中运行,因此您需要显式设置SCRIPTSDIR=/path/to/scriptsdir。 -
好的,但是为什么除了最后一行之外,脚本的每一行都正确?每一行都运行正常,但只有
./metgrid.exe没有运行。我通过放置该文件的整个路径进行测试,它是相同的,它没有发生任何事情。 -
评论是有目的的,是的,我必须从示例中删除它
-
错误信息是什么?如果没有错误消息,您为什么认为它失败了?所有程序都在用户的主目录中吗?
bash本身可能不应该在那里。如果是 WSL 或 cygwin,请注意输入数据中 CRLF 行结尾导致的问题。 -
问题出在 Crontab 变量上。我必须用一些路径添加
LD_LIBRARY_PATH,现在一切正常。