文字っぽいの。

文字を書いています。写真も混ざります。

crontabでrubyスクリプト走らせようとしたらcommand_not_foundした。

現象

wheneverでcrontab登録して、rubyスクリプトを走らせようとしたら

bash: ruby: command not found

というログを大量に残して死んでいたので原因究明した。普通に動いてたのに、Ubuntu自体をアップグレードしたら死んだので謎だった。

環境

だいたいこんな感じ。

  • Ubuntu13.10
  • rbenv
  • ruby 2.0.0-p247
  • zsh

原因

 .zshrcにはrubyのパス設定が書いてあって、zsh上では動かしたいスクリプトが正常に動作してたのでハマった。

 bash側でパスが通ってないのが問題だった。ログインシェルをzshにしてるから、crontabでもzshのパスを使ってくれているかと思ったらそんなことは全然なかったぜ!ちゃんとbash側でも読める設定ファイルに書いてあげないといけない。原因が分かると「そりゃそうだわな。」といった問題でした。

対策

bash側にもパス通せばいいだけなので.bash_profileとか.bashrc

export PATH=$HOME/.rbenv/bin:$PATH

を追加してあげれば動いた。これ、今後もハマりそうだから、下記リンク先とか読んで、適切に設定したほうが良さそう。

Unixシェル - Wikipedia