LoginSignup
1
4

More than 5 years have passed since last update.

ファイルを監視して増分を表示する君

Last updated at Posted at 2017-07-23
watcher.sh
set -eu

# ----------------------------------------------------------------------
# 監視したいファイル
FILE_NAME="a.txt"
# 監視したいファイルの行数を格納。変化したらなにかする。
LINE="a.line"
# ----------------------------------------------------------------------

# ファイルなかったら作成
init() {
    if [ ! -e $FILE_NAME ];then
        touch $FILE_NAME
    fi
    if [ ! -e $LINE ];then
        echo 0 > $LINE
    fi
}

# 行数の変化監視
watcher() {
    LAST_LINE=`cat $LINE`
    CURRENT_LINE=`wc -l $FILE_NAME`
    if [ "$CURRENT_LINE" = "$LAST_LINE" ]; then
        return 
    fi

    echo $CURRENT_LINE > $LINE

    TMP_LINE=`echo $LAST_LINE | cut -f 1 -d " "`
    NEXT_LINE=`expr $TMP_LINE + 1`

    ## 追加された行以降を表示
    NEW_RECORD=`tail -q -n +$NEXT_LINE $FILE_NAME`

    ## 標準出力
    echo "$NEW_RECORD"

    ## メール送信したい場合は以下
    # echo "$NEW_RECORD" | mail -s "subject" to@addr.com

    ## slackに投稿する場合(未確認。ダブルクォーテーション辺りが怪しい。)
    # curl -X POST -H 'Content-type: application/json' \
    #  --data '{"text":"'"$NEW_RECORD"'"}' \
    #  "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX"
}
# ----------------------------------------------------------------------

init
while true
do
    watcher
    # 2秒おきに監視
    sleep 2
done
1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4