[過去ログ] くだらねえ質問はここに書き込め!Part 246 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
350(6): 2021/12/02(木)03:29 ID:QTDCo/g3(2/6) AAS
>>348
inotify-tools には、日本語の記事が多い。
他には、GNU のdirevent もある
ただし、inotify-toolsは、個別のファイルではなく、ディレクトリ丸ごと監視する
注意。宣伝禁止ワードで書き込めないので、URL 内で改行しています
Linux inotifywait でファイルの更新を監視し、コマンドを実行する。2017
外部リンク:sym
foware.blog.fc2.com/blog-entry-2054.html
Linux - inotify-tools でファイル監視! 2019
外部リンク:www.mk-mode.com
inotify-tools, 2021
外部リンク[php]:web.chaperone.jp
352: 350 2021/12/02(木)09:57 ID:QTDCo/g3(3/6) AAS
>>350
の、inotify-tools, 2021 の記事に書いてある
監視対象が多いとエラーになる。
適時、/proc/sys/fs/inotify/max_user_watchesの値を変更すればいい
cat /proc/sys/fs/inotify/max_user_watches #=> 8192
echo 40960 > /proc/sys/fs/inotify/max_user_watches
354: 350 2021/12/02(木)13:28 ID:QTDCo/g3(4/6) AAS
シェルスクリプトで作ってみた。
単に、1つのファイルだけを、watch するものです
確認したいファイルの更新日時を、一時的なファイルに記録しておいて、
5秒毎に、更新日時が新しくなっているか確認する
#!/bin/sh
CHECKED_FILE="abc.txt" # 確認したいファイル
# タイムスタンプを保存するための、一時的なファイル
TIME_STAMP_FILE="time_stamp.txt"
time_stamp_new=""
time_stamp_old=""
# 新しいタイムスタンプを、ファイルに書き込む
write_time_stamp () {
echo -n "$time_stamp_new" > $TIME_STAMP_FILE
}
次へ続く
355: 350 2021/12/02(木)13:29 ID:QTDCo/g3(5/6) AAS
前からの続き
while true
do
if [ -e $CHECKED_FILE ]; then # ファイルが存在すれば
# echo -n で、出力後に改行しない。
# date -r で、ファイルの更新日時を表示する。
# %s は、UTC (1970-01-01 00:00:00) からの秒数で、%3N はミリ秒。10 + 3 桁
time_stamp_new=`date +"%s%3N" -r $CHECKED_FILE`
else
echo "エラー! 確認したいファイルが存在しません!"
exit 1 # 処理を終了する
fi
if [ -e $TIME_STAMP_FILE ]; then # ファイルが存在すれば
time_stamp_old=`cat $TIME_STAMP_FILE` # ファイルから読み込む
# ファイルの更新日時が新しくなったら、それでファイルを上書きする
if [ "$time_stamp_new" != "$time_stamp_old" ]; then
write_time_stamp # 関数
# ここに、実行したいコマンドを書く。例えば、echo `date`
fi
else
write_time_stamp # 関数
fi
sleep 5
done
356: 350 2021/12/02(木)14:23 ID:QTDCo/g3(6/6) AAS
このスクリプトの実行は「ctrl + c」で止めて下さい
それと、
# echo -n で、出力後に改行しない
というコメントは、関数内の「echo -n」の所です
そもそもの疑問として、
確認したいファイルの更新日時を、
一時的なファイルに記録しておく必要があるのかどうか?
必要ないかも知れない
357(1): 350 2021/12/03(金)01:09 ID:0c/fcjM7(1/2) AAS
修正。一時的なファイルに記録するのをやめました
#!/bin/sh
CHECKED_FILE="abc.txt" # 確認したいファイル
time_stamp_new=""
time_stamp_old=""
while true
do
if [ -e $CHECKED_FILE ]; then # ファイルが存在すれば
# date -r で、ファイルの更新日時を取得する。
# %s は、UTC (1970-01-01 00:00:00) からの秒数で、%3N はミリ秒。10 + 3 桁
time_stamp_new=`date +"%s%3N" -r $CHECKED_FILE`
else
# 標準エラーへ出力して、処理を終了する
echo "エラー! 確認したいファイルが存在しません!" 1>&2
exit 1
fi
if [ "$time_stamp_old" = "" ]; then
# 空文字列の時は代入する。最初の1回だけ
time_stamp_old="$time_stamp_new"
# ファイルの更新日時が新しいなら、それを代入する
elif [ "$time_stamp_new" != "$time_stamp_old" ]; then
time_stamp_old="$time_stamp_new"
# ここに、実行したいコマンドを書く。例えば、echo `date`
fi
sleep 5
done
360: 350 2021/12/03(金)20:09 ID:0c/fcjM7(2/2) AAS
>>357
修正
># ここに、実行したいコマンドを書く。例えば、echo `date`
「echo `date`」は、shellcheck でチェックしたら、ダメだった
date が正しい使い方です。
echo を使ったり、`〜` で囲ったりするのは、いらない
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.293s*