Crontab 未运行 shell 脚本

Crontab 未运行 shell 脚本

使用帐户alex,我创建了:

~/pocketmine/pocketmine.sh

当我使用同一帐户手动运行此命令时alex

cd pocketmine
./pocketmine.sh start

它运行良好。

我已将此添加到/etc/crontab

16 15    * * *   alex /home/alex/pocketmine/pocketmine.sh start

而且15点16分不工作。

有人可以告诉我我做错了什么吗?

答案1

一般来说,/etc/crontab使用命令比直接编辑更容易crontab。更改非 root 用户的 crontab 的语法因平台而异。例如,在 Red Hat Enterprise Linux 上,它将是:

# crontab -e -u alex

在 AIX、HP-UX 和 Solaris 上:

# crontab -e alex

您可能还需要添加该用户cron.allow才能运行作业。

有关作业未运行的原因的详细信息可以在 cron 日志中找到,该日志的位置也各不相同。

编辑:要直接回答您的问题,您的直接编辑可能不起作用,因为您没有重新启动 cron 守护程序。crontab这是它为您提供的众多有价值的服务中的另一项。

答案2

如果您的脚本在从 shell 中的命令行运行时可以正常运行,但无法从 执行,则您运行的cron环境可能存在问题。请尝试附加:cron

2> /tmp/error.txt 

到你不会执行的语句的末尾,cron看看执行过程中发生了什么错误。运行命令cron并读取文件的内容/tmp/error.txt

rsync当我从文件运行时遇到问题时cron,我在文件中收到以下输出error.txt

ld.so.1: rsync: fatal: libiconv.so.2: open failed: No such file or directory.

问题在于环境未设置为找到执行命令所需的库。我LD_LIBRARY_PATH在脚本的开头添加了一个环境变量语句,以将变量设置为与文件LD_LIBRARY_PATH中的变量相同的值,.profile因为当我使用我的配置文件从 shell 运行脚本时,脚本正确执行。

"export LD_LIBRARY_PATH="/usr/lib:/usr/local/lib"

之后,一切顺利。我的rsync程序用完了,/usr/local/lib所以我猜测对该区域的引用解决了我的问题。如果在引用脚本中的其他文件时不使用完整路径,则还可能会遇到其他路径问题。

相关内容