我在使用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脚本中添加其他内容吗?
答案 0 :(得分:0)
Cron只将非常有限数量的环境变量传递给您的工作。根据{{3}}:
SHELL
设置为/bin/sh
PATH
设置为/usr/bin:/bin
LOGNAME
和HOME
是从crontab的/etc/passwd
行设置的
所有者。
HOME
,PATH
和SHELL
可能会被设置覆盖 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