Как предлагает Лим Дуллаарт , выводить заголовок только в том случае, если выходной файл не существует.
Это предложение по общему улучшению вашего скрипта (при условии, что GNU awk
илиmawk
):
if [ ! -f "/home/result_$CURR_TIME_EPOCH.csv" ]; then
echo 'collectiontime,hostname,diskusage,directory' >"/home/result_$CURR_TIME_EPOCH.csv"
fi
for dir in /data01 /opt /opt/splunk /opt/splunk/var/lib/splunk/kvstore /opt/splunk/var/run/searchpeers /opt/splunk/var/run
do
sudo du -sh "$dir" |
awk -v OFS=',' '{ print strftime("%s"), $1, $2 }'
done >>"/home/result_$CURR_TIME_EPOCH.csv" 2>/dev/null
Если вы используете bash
, вы можете улучшить читаемость, используя массив для каталогов (и отдельную переменную для выходного файла):
dirs=( /data01
/opt
/opt/splunk
/opt/splunk/var/lib/splunk/kvstore
/opt/splunk/var/run/searchpeers
/opt/splunk/var/run )
outfile="/home/result_$CURR_TIME_EPOCH.csv"
if [ ! -f "$outfile" ]; then
echo 'collectiontime,hostname,diskusage,directory' >"$outfile"
fi
for dir in "${dirs[@]}"; do
sudo du -sh "$dir" |
awk -v OFS=',' '{ print strftime("%s"), $1, $2 }'
done >>"$outfile" 2>/dev/null
Чтобы удалить старые файлы, вы можете использовать, например,
find /home -maxdepth 1 -type f -name 'result_*.cvs' -ctime +1 -delete
Это найдет и удалит все обычные файлы с именами, соответствующими заданному шаблону, и которые имеют отметку времени ctime более одного дня назад. Подкаталоги /home
не будут искаться благодаря -maxdepth 1
.
Спасибо @icarus, просто поймите, что шлюз и маршрутизатор должны использовать один и тот же адрес, который обрабатывает весь входящий и исходящий трафик. Ранее было 2 роутера, которые работали для другой цели, поэтому проблема возникла только сегодня, потому что на другом роутере было изменено правило.