gpt4 book ai didi

ruby - #!/usr/bin/env ruby​​ 在 cron 中找不到

转载 作者:数据小太阳 更新时间:2023-10-29 06:51:51 25 4
gpt4 key购买 nike

我有一个简单的 ruby​​ 脚本,hello.rb:

#!/usr/bin/env ruby
puts 'hello'

在命令行下运行正常:

# /usr/local/src/hello/hello.rb
hello

但是,如果我把它放在 cron 中:

* * * * * /usr/local/src/hello/hello.rb >> /usr/local/src/hello/hello.log 2>&1

日志文件中有错误:

/usr/bin/env: ruby: No such file or directory
/usr/bin/env: ruby: No such file or directory
...
/usr/bin/env: ruby: No such file or directory

/usr/bin/env ruby​​ 虽然在命令行运行正常:

# /usr/bin/env ruby -v
ruby 1.8.7 (2012-10-12 patchlevel 371) [i686-linux]

如何修复 cron 的 env 错误?

最佳答案

问题是环境不是你所期望的。

您没有说明 cron 是以您的用户身份还是以 root 身份运行,但是无论哪种情况,您都可以通过添加另一个 cron 条目来测试以查看环境:

* * * * * /usr/bin/env > /path/to/your/home/directory/env.txt

让它运行一次,然后将其拉出并查看文件。

与其使用 /usr/bin/env 尝试寻找 Ruby 来运行您的代码,不如显式定义 Ruby:

* * * * * /path/to/the/ruby/you/want /usr/local/src/hello/hello.rb >> /usr/local/src/hello/hello.log 2>&1

您可以通过以下方式找出您想要的 Ruby:

which ruby

或者,在你的#!行,在那里定义你的 Ruby。

在您的代码中使用 /usr/bin/env ruby​​ 当您使用 RVM 或 rbenv 之类的东西并在 Ruby 版本之间切换时会很方便。当您将某些东西投入“生产”时,无论是在您自己的计算机上,还是在以 root 身份运行的生产主机上,这都不是一个好的选择。

如果您使用的是 Linux 或 Mac 操作系统,请尝试 man 5 crontab 以获取更多信息。另外,“Where can I set environment variables that crontab will use? ”应该很有用。

关于ruby - #!/usr/bin/env ruby​​ 在 cron 中找不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15962573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com