无法在Python脚本中执行Ruby脚本

时间:2015-09-29 22:51:36

标签: python ruby cron

我在使用Python代码执行Ruby脚本时遇到了麻烦。

我的服务器有一个cron作业,应该执行Python脚本和Ruby脚本。但是,Ruby脚本必须在Python之后执行,所以我决定添加一行:

os.system("ruby /home/username/helloworld.rb") 

在Python脚本的末尾。

它运行,但我在日志文件中收到此错误:

/bin/sh 1: ruby not found

我不确定为什么会这样;我尝试在Python控制台中调用完全相同的函数以及手动运行Python脚本,并且两者都完美地工作。换句话说,当cron触发脚本时,这行代码不起作用 ONLY

我可能还需要在crontab / Python脚本中添加其他内容吗?

1 个答案:

答案 0 :(得分:0)

Cron只将非常有限数量的环境变量传递给您的工作。根据{{​​3}}:

  • SHELL设置为/bin/sh
  • PATH设置为/usr/bin:/bin
  • LOGNAMEHOME是从crontab的/etc/passwd行设置的  所有者。
  

HOMEPATHSHELL可能会被设置覆盖   crontab的; LOGNAME可能不会。

因此,如果您的ruby可执行文件未位于/usr/bin/bin cron,则默认情况下无法找到它。

您可以在crontab中指定PATH以包含您的ruby可执行文件。

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

17 * * * * python my_ruby_calling_script.py