Files
xdp-project-bpf-examples/pping/scripts/rotate-pping-output.sh

44 lines
951 B
Bash
Raw Normal View History

#!/bin/bash
MAX_WAIT_ITER=10
pping_path=${1:-"/var/log/pping/pping.out.json"}
instance=$2 # pping service instance to reload
pping_folder=$(dirname "$pping_path")
pping_file=$(basename "$pping_path")
if [[ ! -f "$pping_path" ]]; then
# Nothing to rotate
exit 0
fi
dailyfolder="$pping_folder/$(date -Idate)"
if ! mkdir -p "$dailyfolder"; then
exit 1
fi
newplace="$dailyfolder/$pping_file.$(date -Iseconds)"
if ! mv "$pping_path" "$newplace"; then
exit 1
fi
if [[ -n "$instance" ]] && systemctl is-active --quiet "pping@$instance.service"; then
systemctl reload "pping@$instance.service"
fi
# Compress the old file (once ePPing has stopped writing to it)
if [[ -f "$newplace" ]]; then
for (( i = 0; i < MAX_WAIT_ITER; i++)); do
if fuser -s "$newplace"; then
sleep 1
else
gzip "$newplace"
exit $?
fi
done
fi
echo "Timed out waiting for $newplace to become unused, unable to compress it" 1>&2
exit 1