1

我有一个开发人员为我编写的脚本,它执行主要与 ffmpeg 相关的各种功能。当我使用手动运行脚本时

sh /home/site/rawvids/encode.sh > /home/site/rawvids/log.txt

该脚本运行良好,但是当它通过 cron 运行时失败,错误代码为 127

有任何想法吗?

ls -l脚本上显示:

-rwxrwxrwx 1 站点没人 3786 Jul 23 17:07 /home/site/rawvids/encode.sh*

4

3 回答 3

2

错误 127 表示“找不到命令”。您可能在脚本中运行了一些不在 of 中的命令cron(如果您查看 ,您可以看到 cron 的 PATH 是什么/etc/crontab)。

您可以在 shell 中检查当前的 PATH:

$ echo $PATH

然后将此 PATH 复制到脚本的开头:

PATH=... 

而不是...您必须编写您之前获得的行(使用echo $PATH)。

#!/bin/sh还要检查脚本开头是否有 shebang 行。sh如果您在没有命令行的情况下启动脚本,则它是导入的。

如果您可以向我们展示/etc/crontab运行脚本的行,那也很棒。

于 2012-07-26T18:36:55.287 回答
0

您很可能依赖于未为 cron 设置的环境变量(我不确定 cron 是否使用任何?)或者 cron 运行的权限是错误的。如果您在 cron 版本中像这样管道输出,它会得到任何输出吗?

于 2012-07-26T17:34:15.733 回答
0

同样...,好吧,我只能忍受这些路径问题,我设置了指向 ffprobe 路径的符号链接或缺少的任何内容,例如

ln -s /usr/local/bin/ffprobe /home/ec2-user/.rvm/rubies/ruby-2.3.0/bin/ffprobe

于 2016-09-17T00:40:36.227 回答