cronでスクリプト実行させるまで苦労したのでメモで残します.
sshで接続済み,シェルをbashに変更済みとして話を進めます.さくらインターネットのサーバコントロールパネルからcronは設定できますが,設定してもろくに動かず,困っていました.
結論,ディレクトリ指定が非常に厳格ということです.
実行コマンド
全てにおいて絶対パスで書かないとまともに動きません.コントロールパネルの「* CRON スケジュール設定 *」の「実行コマンド」の書き方は
cd /home/あなたのユーザ名/www/aiu; /usr/local/bin/bash /home/あなたのユーザ名/www/aiu/hello.sh
となります.まず,実行ファイルが置いてあるディレクトリまでcdで移動した後,bashでhello.shを実行という流れです.単純なのですが,書き方が冗長です.
実行日時については適当に設定してテストをしてみてください.ちなみにコントロールパネルでなくてもsshからcrontabコマンドで弄れます.
シェルスクリプト
また,シェルスクリプトの書き方も同様に全て絶対パスで書く事をおすすめします.コマンドも絶対パスを指定します.例えば以下は動作しません.
#!/usr/local/bin/bash wget https://XXXXXXX.XXX/XXX.zip
これを実行すると…
/home/あなたのユーザ名/www/aiu/hello.sh: line 2: wget: command not found
wgetコマンドがないそうです.嘘だぁ! sshからbash上で直接wgetしてみると普通に動くのに… ということで,which wget で場所を確認してから以下に変更します.
#!/usr/local/bin/bash /usr/local/bin/wget https://XXXXXXX.XXX/XXX.zip
これでしっかりダウンロードできました.
時間になっても動かないとき
時間になっても動かない,動いてるかどうかわからない時はメールで実行内容が飛ばせます.crontab -eでも書き換えられますが,コントロールパネルでもいけます.
どうなってるのか意味分からん!という時はとりあえずメールを設定してエラーを読んでみるのが一番の近道だと思います.自分もこれでサクっと解決できました.