脚本不在cron下运行,而是手动运行

时间:2012-07-26 17:30:12

标签: linux cron

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

手动运行脚本时
sh /home/site/rawvids/encode.sh > /home/site/rawvids/log.txt

脚本运行正常但是当它通过cron运行时它失败并显示错误代码127

有什么想法吗?

脚本上的

ls -l显示:

  

-rwxrwxrwx 1 site nobody 3786 Jul 23 17:07 /home/site/rawvids/encode.sh *

3 个答案:

答案 0 :(得分:2)

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

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

$ echo $PATH

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

PATH=... 

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

同时检查脚本开头是否有shebang行#!/bin/sh。如果在命令行中启动没有sh的脚本,则会导入。

如果您能向我们展示运行该脚本的/etc/crontab行,那就太棒了。

答案 1 :(得分:0)

很可能你要么依赖于一个没有为cron设置的环境变量(我不确定cron是否使用了?)或者cron运行的权限是错误的。如果你像cron版本那样输出输出,它会得到任何输出吗?

答案 2 :(得分:0)

同样......,我只能忍受这些路径问题,我建立了一个指向ffprobe路径或任何遗漏的符号链接,如

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