Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2912

cygwinのcronで実行されないスクリプト

$
0
0

タイトルの現象について一応は解決しました。解決したのですが、うまく行かなかった原因も、うまく行った理由もよく分かっていません。
確認したことを簡単にまとめておきます。

スクリプトの内容

  • テキストデータを処理するスクリプト
  • 中間ファイル、実行の様子を確認できるログファイルを書き出す

動かない状況

  • 他のスクリプト(同じものを3個登録)の実行実績がある環境
  • コマンドラインから「./script.sh」だと動く
  • コマンドラインから「/path/to/script.sh」だと動く
  • cronだと動かない
  • 登録当初は「chmod 744」だったのを「755」に変更。
  • コマンドラインでbashのパス補完で確認した「/path/to/script.sh」のコピペもダメ

確認したこと

  • croneventsでは実行した様子がログとして出力されない
  • /var/log/cron.logで見ると「/path/to/script.sh」があることは認識している
    • 起動時に「-x ext,sch,proc,pars,load,misc」を指定しています

解決した方法

  • 最終行にあった「/path/to/script.sh」を先頭行に移動したら動いた

備考

なんで、この方法で動いたのか不明。途中で「chmod 755」に変更したのがポイントで、この変更状況がcronに認識されていなかったのかもしれない。しばらく様子見。

後日談

再現してみようとしたけどうまくいきません。

1.簡単なスクリプトを作成

#!/usr/bin/bash

LOG_FILE=/home/USERNAME/logs/debug_cron.log

date '+%Y/%m/%d %H:%M:%S' 2>&1 >> $LOG_FILE

権限は「chmod 700」にしました。

2. CRONに登録

  • crontab -eでcronに登録
  • croneventsを実行し「RELOAD」の表示を確認

3. そして再現せず…

  • /home/USERNAME/logs/debug_cron.logへの書き込みを確認…
  • croneventsでRELOADを確認できれば実行は確実かもしれない。

Viewing all articles
Browse latest Browse all 2912

Trending Articles