Мне пришлось следить за старым программным обеспечением, в котором недостаточно параметров ведения журнала. Это не совсем то, что вам нужно, но может помочь ты.
ref.cfg
и cur.cfg
) каждую секунду cfg.log
, если обнаружено различие watch_cfg.sh
:
#!/bin/bash
cfg_reference="/tmp/ref.cfg"
cfg_current="/tmp/cur.cfg"
while true;
do
cfg1=$(cat $cfg_reference)
cfg2=$(cat $cfg_current)
date_current="$(date +"%F_%T")"
diff_detected=false
test "$cfg1" = "$cfg2" || diff_detected=true
if [ "$diff_detected" = true ]; then
printf "$date_current [cfg] diff detected\n" >> cfg.log
diff $cfg_reference $ecfg_current > "./cfg_diff/cur.cfg_${date_current}"
cp -a "$cfg_reference" "./cfg_old/cur.cfg_before_${date_current}"
cp -a "$cfg_current" "$cfg_reference"
fi
sleep 1
done
Выполните эти команды:
chmod +x watch_cfg.sh
nohup ./watch_cfg.sh > /dev/null 2>&1 &
Это отключает процесс от текущий сеанс и отправляет его в фоновый режим.