【发布时间】:2020-05-06 17:56:14
【问题描述】:
我想从 Mac OS 上的 crontab 运行我的脚本,但我收到了一个错误:
ruby: Operation not permitted -- /Users/vitalii/Desktop/Home/update/update.rb (LoadError)
我对 cron 任务和设置的偏好是使用 rvm cron setup 创建的:
#sm start rvm
PATH="/Users/vitalii/.rvm/gems/ruby-2.4.1/bin:/Users/vitalii/.rvm/gems/ruby-2.4.1@global/bin:/Users/vitalii/.rvm/rubies/ruby-2.4.1/bin:/Users/vitalii/.rvm/gems/ruby-2.4.1/bin:/Users/vitalii/.rvm/gems/ruby-2.4.1@global/bin:/Users/vitalii/.rvm/rubies/ruby-2.4.1/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/Applications/Postgres.app/Contents/Versions/latest/bin:/Users/vitalii/.rvm/bin"
GEM_HOME='/Users/vitalii/.rvm/gems/ruby-2.4.1'
GEM_PATH='/Users/vitalii/.rvm/gems/ruby-2.4.1:/Users/vitalii/.rvm/gems/ruby-2.4.1@global'
MY_RUBY_HOME='/Users/vitalii/.rvm/rubies/ruby-2.4.1'
IRBRC='/Users/vitalii/.rvm/rubies/ruby-2.4.1/.irbrc'
RUBY_VERSION='ruby-2.4.1'
#sm end rvm
* * * * * ruby /Users/vitalii/Desktop/Home/update/update.rb >> /Users/vitalii/Desktop/logfile.txt 2>&1
我用chmod 777 给了每个文件执行的权限,但是没有任何更改,并且重复错误。
文件update.rb的内容是
puts 'Hello, World!!!'
谁能告诉我发生了什么以及我做错了什么?
【问题讨论】:
-
我之前没用过
rvm cron setup,是不是和crontab -e打开的crontab一样?如果是这样,您可以尝试通过注释环境变量并使用完整的 ruby 路径/bin/ruby或/home/<user>/.rvm/rubies/ruby-x.x.x/bin/ruby -
/Users/vitalii/Desktop/Home/update真的存在吗?Home是可疑的,因为通常我们不会有一个名为它的目录,但我们确实有一个名为$HOME的环境变量,它等效于~和/Users/vitalii。请注意,它与您将输出重定向到的位置不同:/Users/vitalii/Desktop/logfile.txt -
@theTinMan,Home 这是我的主目录项目,是的,我在项目中使用了她。 Logfile.txt 会有所不同,因为它位于不同的位置。
-
@Vitalii :错误消息意味着 Ruby 在加载文件时遇到了EPERM 错误。如果您从命令行运行相同的命令,它会起作用吗?
ruby -e 'puts "hello"' >> ...在你的 crontab 中可以工作吗?