スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Ubuntu cron crontab シェルスクリプト 設定

Ubuntu 12.04でのcrontabの設定方法メモ。


【1】cronの設定

cronの設定には

$ crontab -e

または

$ sudo crontab -e

を使う。

crontabコマンドは実行したユーザーのcrontabを編集するので、シェルをroot権限で実行したい場合、sudo crontabでrootのcrontabを編集する必要がある。


【2】設定内容の確認

設定したcrontabの内容は、crontab -l で確認できる。sudo crontab -e した場合は sudo crontab -l。

また、ログは /var/log/syslog に吐き出されているため、実行されているかどうかを確認するためには、

$ tail /var/log/syslog

すれば良い。


【3】シェルスクリプトに関する注意点

ここでハマった。

crontabを設定し、上記【2】のsyslogを確認した結果、cronが実行されていることは確認できたが、シェルスクリプトによるファイルが生成されなかった。

問題を切り分けるために、ターミナルからシェルスクリプトを直接実行してみたところ、正常に実行できた。

この場合、シェルスクリプトが正常に実行できない理由はいくつか考えられる。

・設定したcrontabのユーザーに実行権限がない。
 →ls -lでパーミッションを確認し、必要に応じてchmodで実行権限を付与。

・crontabの設定時にコマンドの末尾に出力先を書いていないためにエラーを吐かれる。
 →コマンドの末尾に「> /dev/null 2>&1」を追記して出力を捨てるかファイルに出力するように設定する。

・シェルスクリプト実行時のカレントディレクトリが想定と異なる。
 →シェルスクリプトの冒頭付近に「cd /hoge/hoge」を絶対パスで書き込んでカレントディレクトリを設定する。

今回、ハマった理由は3つめのカレントディレクトリの設定でした。


【4】まとめ

問題の切り分け方としてはこんな感じでしょうか。

・ls -lでパーミッションをチェック。
 →必要に応じて実行権限を付与。

・syslogにcronの実行ログが吐かれない。
 →crontabの設定。

・syslogにログは吐かれるが上手く実行されない。
 →crontabのコマンド実行結果の出力先を指定する。

・シェルスクリプトは実行されているはずなのにファイルが出力されない。
 →カレントディレクトリの設定を疑って、シェルスクリプトにpwdコマンドやcdコマンドを書き込んでみる。

コメントの投稿

非公開コメント

承認待ちコメント

このコメントは管理者の承認待ちです
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
検索フォーム
カテゴリ
月別アーカイブ
最新記事
最新コメント
最新トラックバック
RSSリンクの表示
QRコード
QR
リンク
アクセス解析
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。