無駄なことに時間を使った。
動かないと思ったらパスが通ってないだけだった。
#使用上の注意
crontab -eは危ないので使わないほうがいい
そうなのですが、使ってます。間違って-rを使って削除してしまわないように。
http://qiita.com/furu-s/items/3aa9d55c9f3086cba711
cdで実行するディレクトリに移動する
あるいは絶対パスを指定して実行する必要がある。
実行するコマンドのほうもpathが通ってないと絶対パスにしないと実行されないので注意。
#crontabを開く
crontab -e
#前準備
##環境変数の設定
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
##権限を変更
sudo chmod 755 実行するファイル
##ログが出るよう設定
edit or emacs or vi or...
emacs /etc/rsyslog.confを編集
cronのlogがコメントされているのでコメントアウト
/var/log/cron.logに出力されるようになる。
##ルール
分 時 日 月 曜日 ユーザ コマンド
#例
01 * * * * root ruby /home/ubuntu/test.rb
02 4 * * * root ruby /home/ubuntu/test.rb
22 4 * * 0 root ruby /home/ubuntu/test.rb
42 4 1 * * root ruby /home/ubuntu/test.rb
ユーザー名なしでも通った。(ラブパイのラズビアンで確認)
42 4 1 * * ruby /home/ubuntu/test.rb
**※上の例もrubyのpathが通ってないと通らない。絶対パスにするかpathに記載すること。**
0 11 * * * /bin/bash /home/ubuntu/bin/test.sh
変数を使ってパスをまとめると良いとのこと。
LOG_DIR="/home/logs"
0 9 * * * /bin/bash $BIN_DIR/hoge.sh >> $LOG_DIR/hoge.log