无法在 Python 脚本中执行 Ruby 脚本
Unable to execute Ruby script in a Python script
我在使用 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 脚本中是否还需要添加其他内容?
Cron 仅将非常有限的环境变量传递给您的作业。根据 CRONTAB(5) Man Page:
SHELL
设置为 /bin/sh
PATH
设置为 /usr/bin:/bin
LOGNAME
和 HOME
是从 crontab 的 /etc/passwd
行设置的
所有者。
HOME
, PATH
and SHELL
may be overridden by settings in the
crontab; LOGNAME
may not.
因此,如果您的 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
我在使用 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 脚本中是否还需要添加其他内容?
Cron 仅将非常有限的环境变量传递给您的作业。根据 CRONTAB(5) Man Page:
SHELL
设置为/bin/sh
PATH
设置为/usr/bin:/bin
LOGNAME
和HOME
是从 crontab 的/etc/passwd
行设置的 所有者。
HOME
,PATH
andSHELL
may be overridden by settings in the crontab;LOGNAME
may not.
因此,如果您的 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