使用 cronjob 运行 shellscript 会出现问题,手动执行则不会。有想法吗?

使用 cronjob 运行 shellscript 会出现问题,手动执行则不会。有想法吗?

/home/root/cron_grads.sh我在我的服务器上创建了一个名为 (chmodded 755) 的 shell 脚本。

此目录中还有更多类似500hPa_p0.gs(644) 的 grads-scripts。我的主要脚本会创建一个临时文件grads_exec.gs,在其中填充一些内容,然后500hPa_p0.gs在执行整个文件之前尝试将内容复制到文件末尾。如果我手动启动它,即使在服务器上,它也能正常工作。

但使用crontab -e

42 0,6,12,18 * * * /home/root/grads/cron_grads.sh

... 出现错误。脚本启动,但 grads 说:

cat: 500hPa_p0.gs: File or directory not found

cron_grads.sh我在#!/bin/bash其中顶部使用 bash 。crontab -e还包含SHELL=/bin/bash

有任何想法吗?

答案1

这是脚本中的问题cron_grads.sh。当您手动调用它时,我假设您已进入,/home/root因此它会运行如下内容:

echo test > grads_exec.gs
cat 500hPa_p0.gs >> grads_exec.gs

但是如果你在 时从 运行该程序/home/oli/,它会尝试写入/home/oli/grads_exec.gs和读取/home/oli/500hPa_p0.gs。这就是 cat 在你的情况下崩溃的原因。

要修复,请明确地将 cd 放入正确的目录(并使用绝对路径):

cd /home/root
echo test > grads_exec.gs
cat 500hPa_p0.gs >> grads_exec.gs

或者到处使用绝对路径:

echo test > /home/root/grads_exec.gs
cat /home/root/500hPa_p0.gs >> /home/root/grads_exec.gs

或者为了安全起见,两者皆可。

答案2

相关内容