0

以前作業していた10分ごとに実行したいルビースクリプトがありますが、スクリプトを失い、書き直そうとして動作させることができません。動作したときから変更せずに残したcron設定ですが、これが私が持っているものです。

rvm_bin_path=/home/usr/.rvm/bin
GEM_HOME=/home/usr/.rvm/gems/ruby-1.9.3-p194
SHELL=/bin/bash
IRBRC=/home/usr/.rvm/rubies/ruby-1.9.3-p194/.irbrc
MY_RUBY_HOME=/home/usr/.rvm/rubies/ruby-1.9.3-p194
__array_start=0
rvm_path=/home/usr/.rvm
escape_flag=1
rvm_prefix=/home/usr
PATH=/home/usr/.rvm/gems/ruby-1.9.3-p194/bin:/home/usr/.rvm/gems/ruby-1.9.3-p194@global/bin:/home/usr/.rvm/rubies/ruby-1.9.3-p$
PWD=/etc
LANG=en_CA.UTF-8
_second=1
rvm_version=1.14.1 (stable)
_first=0
GEM_PATH=/home/usr/.rvm/gems/ruby-1.9.3-p194:/home/usr/.rvm/gems/ruby-1.9.3-p194@global
RUBY_VERSION=ruby-1.9.3-p194
_=/usr/bin/env

*/10    *       *       *       *       bash -li -c /home/usr/MeetCal-bot/run-bot.sh

私はcronをsuとして実行しています。そのため、rubyを実行するために必要なものがすべて揃っていることを確認するために、これらすべての環境変数を追加する必要がありました。以前は同じ情報で動作していたので、何も欠けていないと思います

私が持っているbashスクリプトはこれです:

#!/bin/bash
ruby /home/usr/bot/bot.rb >> /home/usr/bot/output.txt

ジョブが実行されると、空の場合を除いてoutput.txtが作成され、出力、おそらくルビーエラーメッセージが表示されると思います。

パーミッションの問題を修正するために、最後の手段としてディレクトリに対してchmod 777 *を実行しましたが、それは役に立ちませんでした。

私がローカルユーザーとしてrubyスクリプトを実行すると、エラーなしで正常に実行されますが、なぜそれが私のユーザーとして実行されているのか理解できないようですが、suとしては機能しません。

4

1 に答える 1

3

それらは必要ないので、-i私は省略します。-cただやる

*/10 * * * * bash -l /home/usr/MeetCal-bot/run-bot.sh

まず始めに。

スクリプトにawhich ruby >>/home/usr/bot/output.txtを挿入して、rubyが検出されたかどうかを確認します。エラーメッセージを表示する2>&1には、rubyの呼び出しに追加します

#!/bin/bash

which ruby >>/home/usr/bot/output.txt
ruby /home/usr/bot/bot.rb >>/home/usr/bot/output.txt 2>&1
于 2013-01-11T07:18:43.617 に答える