linux(linuxBean)でのタスクスケジューラ(cron)を使ってみる
linuxでWindowsのタスクスケジューラみたいなことをやりたくて調べていると,cronを使う方法が有名だと知る.ということで少し調べてみた.
同じlinuxでもOSにより設定が異なるようだが,今使っているlinuxBean(ubuntu系)について軽くまとめてみる.
[cronの設定]
端末で次のコマンドを実行.
$ crontab -e
エディタが表示されるので,最下行にタスクの設定を追加し保存.
# m h dom mon dow user command
分 時 日 月 曜日 [ユーザ名] [コマンド]
例として毎時20分のタイミングでユーザb35612ykがtest.shを実行したい場合は
# m h dom mon dow user command 20 * * * * b35612yk sh /home/b35612yk/test.sh
設定が正しく反映されているかを確認するためには,
次のコマンドを実行.
$ crontab -l
うまく反映されていない場合は,
同じ内容を書き込んだテキストファイル(例えばcron.txt)を作成し,
$ crontab cron.txt
で読み込ませることもできる.
上記設定をしてもうまくジョブが起動しない場合.
cronはおそらくOSを起動したタイミングで起動しているはずだが,下記のコマンドでcrontab状態を確認できる.
[サービスの確認]
$ /etc/init.d/cron status
[起動]
$ /etc/init.d/cron start
[再起動]
$ /etc/init.d/cron restart
crontabが正しく動いているかを確認するには,下記に保存されている実行ログを確認する.
$ vi /var/log/syslog
その中に実行ログがあれば,cronは正常に動いていることになる.
今回の動作確認ではJavaで書いたバッチプログラムをシェルを使って動かそうとしていたのだけど,cronの実行ログがあるにも関わらずシェルが動いた形跡が見られなかった.この手の情報を公開しているサイトには大抵書いてあることだが,具体的に確認したこととしては,
1.シェルファイルの実行権限が正しく設定されているかを確認
2.crontab の設定に実行ユーザ名が指定されているか確認
3.errorログをはかせる.具体的には,
# m h dom mon dow user command 20 * * * * b35612yk sh /home/b35612yk/test.sh >>/tmp/analog.log 2>>/tmp/analog-err.log
などとcrontabに登録.エラーがあればログファイルに内容が出力される.
#今回の場合,エラーの原因はJavaコマンドの参照をうまく取れていなかったので,/usr/bin/javaのようにフルパスで指定してあげたらOKだった.
以上.
鶏っぷ
酉年なので、ひさしぶりに鶏っぷキメてきた。相変わらずいい仕事してる。
赤天
最高の人生。
麺屋ジョニー
お馴染みの麺屋ジョニー。営業が22時までだと思ってたけど、5分前の入店で快く入れてもらえた。その後もお客さんが入ってきたので、もしかしたら0時までやってる?
初めて厚切り炙り焼きチャーシュー麺にした。
とても美味しかったです。(小並感)
無鉄砲本店
言わずと知れた京都の超有名店「無鉄砲」。昔から存在は知っていたけど、初めてきてみた。京都というより奈良。
激辛の高菜もあったょ。
豚骨チャーシュー。クセがなく濃厚でとても美味しい。
是空
岩本屋系列の是空に行ってきた。
笹はらの味に慣れているせいか、出汁が甘く美味しく感じた。そんなに魚臭くなく濃厚。
唐揚げが驚異の大きさだった。
締めにご飯をスープに入れた。なかなかいい仕事してる。