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无法自动执行,直接运行脚本却能执行

Crontab 无法执行 PHP 脚本。错误的解释器:没有这样的文件或目录

Crontab定时任务中python3脚本无法运行问题解决

crontab添加了定时任务却无法执行

linux中打包备份脚本,手动执行可以正常打包,使用crontab -e 添加到系统定时任务中执行就无法打包

linux中打包备份脚本,手动执行可以正常打包,使用crontab -e 添加到系统定时任务中执行就无法打包