crontab,无法执行所有脚本
Posted
技术标签:
【中文标题】crontab,无法执行所有脚本【英文标题】:Crontab, can't execute all the script 【发布时间】: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
,现在一切正常。
【参考方案1】:
我在我的 crontab 中添加了与 WRF 执行相关的库的完整路径。
LD_LIBRARY_PATH=$LD_LIBRARY_PATH
【讨论】:
以上是关于crontab,无法执行所有脚本的主要内容,如果未能解决你的问题,请参考以下文章
Crontab 无法执行 PHP 脚本。错误的解释器:没有这样的文件或目录