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

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

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

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Ruby

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

Q&A

2回答

1488閲覧

単体ファイル実行時とcronによる実行時で結果が異なる

kozica

総合スコア58

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Ruby

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

0グッド

0クリップ

投稿2018/11/09 02:48

rubyの単体ファイルを実行するとエラーなくできるのに、
cronで定期実行にすると下記のようなエラーが検出される原因がわかりません。

ファイルやディレクトリがないと言われているのでパスが問題なのかと思いますが、、、

ruby

1 2#test.rb 3day = Time.now.strftime("%Y%m%d") 4 5unless Dir::exist?("./mrk_csv/#{day}") 6 Dir::mkdir("./mrk_csv/#{day}") 7end 8 9 10#-> 11/home/[username]/workspace/mrktest/test.rb:31:in `mkdir': No such file or directory @ dir_s_mkdir - mrk_csv/20181109 (Errno::ENOENT) 12 from /home/[username]/workspace/mrktest/test.rb:31:in `<main>' 13

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

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

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

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

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

guest

回答2

0

Dir.mkdir("mrk_csv/20181109")しているようですが、/home/[username]/mrk_csv/が存在しないために、20181109が作れないというエラーです。

「カレントディレクトリ」という概念を理解しましょう。

Dir.mkdir("workspace/mrktest/20181109")(相対パス)
または、
DIr.mkdir(File.expand_path("~/workspace/mrktest/20181109"))(絶対パス)
で。

投稿2018/11/09 03:02

otn

総合スコア84533

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

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

0

cronの実行アカウントに、そのディレクトリへの権限が与えられてないんじゃないですか。

投稿2018/11/09 02:50

kunai

総合スコア5405

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

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

kozica

2018/11/09 03:02

ファイルの実行自体はされているので権限はあるかと思います。 crontabのエラーだと中身のエラーなので。 私が気になっている点が  Dir::exist?("./mrk_csv/#{day}")がfalseでmkdirが実行されている点で、そのファイルは既にあるのでfalseになって実行されないはずなのです。 つまり、cronだとカレントディレクトリが違うのかとみて調べてみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問