はじめに
railsでサーバ構築をしてて,wheneverを使ってcronでコマンドを実行させようとしていました.
しかし...
>>>何も出ない<<<
エラーすら出てくれないのです.ネットで「cron 実行されない」など検索してもイマイチ自分と同じ状況ではなさそうでした.
プロセスを確認しよう
まずはこれを確認してください
$ ps aux | grep cron
すると以下のような"感じ"の表示(これは解決した後の表示なので一緒ではないです)がされると思います.ここで,項目が3つくらいだったら良いのですが,もしかして2~30個あったりしませんか?それが私の場合のエラー(?)でした.
xryuseix 27205 0.0 0.0 4270216 280 s001 S+ 2:48AM 0:00.00 tail -f /Users/xryuseix/Desktop/cron.log
root 26516 0.0 0.0 4288124 544 ?? Ss 2:42AM 0:00.02 /usr/sbin/cron
xryuseix 27434 0.0 0.0 4277496 684 s003 S+ 3:14AM 0:00.00 grep --color=auto cron
これは今動いているcronのプロセス一覧で,なんらかのエラーで正常終了できないものの一覧となっています.そこで,一旦プロセスをkillします.いろんな方法がありますが,これが便利です.
$ sudo kill -9 `pgrep -f cron`
crontabを書き換えよう
プロセス一覧にcronは実行しようとしていることがわかるので,問題があるのはcrontabです.crontabの書き方が悪くてうまく命令を実行できていないものと考えました.これがですね,私の調べ不足かもしれないのですが(多分そう),wheneverで生成されたcrontabではうまく動かないんですよね.そこでこのコマンドを実行します.
$ crontab -e
とりあえず中身は以下のように書き換えてください.
SHELL=/bin/zsh
* * * * * echo "a" >> ~/Desktop/a.txt
これは,zshというシェルを使って,毎分デスクトップにあるa.txtファイルに「a」を追記するという意味です.このような簡単なコマンドで実行しましょう.zshではなくbashを使っている方は適宜変えてください.
するとどうですか,できていますか?私はこれでできました.
最後に
これでもできなかったらすみません><
他のサイトも見てみてください><