cronで実行したシェルから呼ばれるRubyスクリプトの標準出力が出力されない
test.sh
#!/bin/sh ruby test.rb echo done
test.rb
puts 'hoge'
上記スクリプトがあった場合に、以下のようにcronを設定しても、test.sh のdoneしかtest.logには出力されない。
0 * * * * cd /home/user/tools; sh test.sh >> ./test.log
cronで実行される際、環境変数は実行ユーザでログインした場合はとは異なるという問題もある。
以下のようにして環境変数を読み込む -l オプションをつけて、-c でコマンドを実行させればよい。
0 * * * * /bin/bash -lc 'cd /home/user/tools; sh test.sh >> ./test.log'