Как запустить скрипт из crontab и избежать «LoadError» - PullRequest
0 голосов
/ 20 января 2020

Я хочу запустить свой скрипт из crontab на ОС Ma c, но я получаю сообщение об ошибке:

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!!!'

Может кто-нибудь сказать мне, что происходит и что я делаю неправильно?

Ответы [ 2 ]

2 голосов
/ 21 января 2020

Я нашел решение, так как я использую Mojave.
Мне нужно сделать дополнительные настройки в системе. Кто бы мог подумать ... введите описание ссылки здесь

Это оказывается проблемой, так как вам нужно разрешить разрешения для cron. И правильная команда запуска для crontab -e, это
* * * * * /bin/bash -l -c 'ruby /Users/vitalii/Desktop/Home/update/update.rb'

0 голосов
/ 21 января 2020

Существует небольшая разница при установке задания crontab через crontab -e или при вводе их в /etc/crontab

$ crontab -e
# m h dom mon dow command
  * *   *  *  *   echo ok

$ nano /etc/crontab
# m h dom mon dow user command
  * *   *  *  *   root echo ok

Так ли это?

...