У меня есть сценарий удара, который запускает рубиновый скрипт, который выбирает мою подачу Твиттера.
## /home/username/twittercron
#!/bin/bash
cd /home/username/twitter
ruby twitter.rb friends
Это работает успешно в командной строке.
/home/username/twittercron
Но когда я пытаюсь выполнить его как cronjob, это работало, но не смогло выбрать подачу.
## crontab -e
*/15 * * * * * /home/username/twittercron
Сценарий был chmod +x. Не уверенный, почему это как таково. Какие-либо идеи?
Ruby Version Manager (rvm) вызывал проблему. Пришлось вызывать скрипт в cron вот так.
*/15 * * * * bash -c 'source /home/username/.rvm/scripts/rvm && /usr/bin/env ruby /home/username/twitter/twitter.rb friends'
проверьте свою почту и посмотрите, есть ли сообщения об ошибках. Добавьте отладку в ваш сценарий bash, например, echo done> debug.log
в последней строке и посмотрите, создан ли debug.log
. удалите ## / home / username / twittercron
из своего скрипта и поместите #! / bin / bash
в первую строку.
*/15 * * * * * /bin/bash /home/username/twittercron
Вам необходимо указать абсолютный путь к выполняющейся команде (или через env).
*/15 * * * * * /usr/bin/env sh /home/username/twittercron
Или:
*/15 * * * * * /usr/bin/env ruby /home/username/twitter/twitter.rb friends