質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

3989閲覧

cronでRubyファイルを定期的に実行する

lyzmfeqpxs54

総合スコア237

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2017/09/06 09:28

編集2017/09/06 12:15

cronでRubyファイルを定期的に実行しようといております。
下記サイトを参考に.shファイルを定期的に実行することはできたのですが、Rubyの場合定期的に実行できません。間違っている箇所をご指摘いただければと思います。

また、うまく動かない場合の確認方法やアプローチも合わせてご教示いただければ幸いです。
よろしくお願いいたします。

http://vdeep.net/cron-shell-ruby#1402

Ruby

1 2$ which ruby 3/usr/local/rbenv/shims/ruby 4 5# crontab -e 6*/1 * * * * cd /home/rails/sample && /usr/local/rbenv/shims/ruby regularly.rb 7 8regularly.rbは/home/rails/sample直下に置いてあります 9 10 11# regularly.rb 12p "1分おきに実行中" 13 14

Ruby

1 2 3$ sudo tail /var/log/cron 4# 実行結果 5 6Sep 6 21:01:01 xxxxx CROND[9945]: (root) CMD (cd /home/rails/sample && /usr/local/rbenv/shims/ruby regularly.rb) 7Sep 6 21:01:01 xxxxx CROND[9946]: (root) CMD (run-parts /etc/cron.hourly) 8Sep 6 21:01:01 xxxxx run-parts(/etc/cron.hourly)[9946]: starting 0anacron 9Sep 6 21:01:01 xxxxx run-parts(/etc/cron.hourly)[9965]: finished 0anacron 10Sep 6 21:02:01 xxxxx CROND[9993]: (root) CMD (cd /home/rails/sample && /usr/local/rbenv/shims/ruby regularly.rb) 11Sep 6 21:03:01 xxxxx CROND[10027]: (root) CMD (cd /home/rails/sample && /usr/local/rbenv/shims/ruby regularly.rb) 12Sep 6 21:04:01 xxxxx CROND[10063]: (root) CMD (cd /home/rails/sample && /usr/local/rbenv/shims/ruby regularly.rb) 13Sep 6 21:05:01 xxxxx CROND[10100]: (root) CMD (cd /home/rails/sample && /usr/local/rbenv/shims/ruby regularly.rb)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

にようにpメソッドを書いている場合、正しく動作していれば、コンソールに"1分おきに実行中"が出力されるという解釈は問題ないでしょうか。

間違っています。
「"1分おきに実行中"」という行が、1分おきに実行ユーザーにメールされてきます。
cronから起動されたプログラムの標準出力、標準エラー出力は、リダイレクトされていない限り実行ユーザーにメールされます(MAILTO=hoge@huga と指定すれば別の宛先にメールすることも可能)。

コンソールに出したければ、

Ruby

1open("/dev/console","w"){|f| f.puts "1分おきに実行中"}

のようにしますが、あなたが「コンソール」と言っている物が一般的な意味でのコンソール(/dev/console)なのかどうか。また一般的な意味でのコンソールだとすると、コンソールには日本語が出ないかもしれません。私の環境だと■になりますね。

投稿2017/09/06 13:02

otn

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lyzmfeqpxs54

2017/09/06 13:38

ご回答ありがとうございます。解釈が間違っておりお恥ずかしい限りです。 1分毎にテキストファイルの末尾に文字列を追加していくようregularly.rbを書き直したところ、テキストには1分毎に文字列が追加されており、cronは正しく動作しておりました。お騒がせいたしました。 pメソッドで出力されない=正しく動いていないという解釈が間違っていたためです。
guest

0

ベストアンサー

定期実行ができないときは、まず、crond が動いているか、システムの時刻があっているか、crontab に記述されたスクリプトの権限が正しいか、をチェックするのが最初ですが、シェルスクリプトなら動いている、ということは、このあたりはクリアしているのでしょう。

もしかすると、crond のログに何か残っているかもしれません。

$ sudo tail /var/log/cron

あとは、実行時のエラー出力を拾ってみて原因を調べる、というのもあります。

$ crontab -l */1 * * * * cd /home/rails/sample && /usr/local/rbenv/shims/ruby regularly.rb 2>> /home/rails/sample/err.log

投稿2017/09/06 11:20

unau

総合スコア2468

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lyzmfeqpxs54

2017/09/06 12:18

ご回答ありがとうございます。ご教示いただいた$ sudo tail /var/log/cronを実行しログを見てみたのですが一応1分おきに何かしようとはしていそうです。 実行するファイルに # regularly.rb p "1分おきに実行中" にようにpメソッドを書いている場合、正しく動作していれば、コンソールに"1分おきに実行中"が出力されるという解釈は問題ないでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問