我有一个开发人员为我编写的脚本,它执行主要与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 *
答案 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