проверьте этот код
это просто синтаксический анализ вывода ping
bash-4.1$ cat ping.awk
#!/usr/bin/awk -f
#
# analyzes ping output on Linux and looks for missed returns
# based on icmp_seq
#
# ping output is expected on stdin
#
BEGIN { num = 0 }
$5 ~ /icmp_seq=/ {
split($5, res, /=/);
if (res[2] != num + 1) {
print "missed between", num, "and", res[2] }
num = res[2];
}
bash-4.1$ cat ping_result.txt
64 bytes from 192.168.56.11: icmp_seq=38 ttl=64 time=1.23 ms
64 bytes from 192.168.56.11: icmp_seq=52 ttl=64 time=0.831 ms
64 bytes from 192.168.56.11: icmp_seq=53 ttl=64 time=0.679 ms
bash-4.1$ awk -f ping.awk ping_result.txt
missed between 0 and 38
missed between 38 and 52
Вы можете сделать следующее:
find. -name '*log' -mtime +30 -print0 | tar -czvf backup.tgz --remove-files --null -T -
С:
find
опции :-name '*log' -mtime +30
:выбирает файлы журнала старше 30 дней -print0
:вывести в стандартный вывод полное имя файла, за которым следует нулевой символ tar
опции :--remove-files
:удалять файлы после их добавления в архив --null
:считывает пустые значения -завершенные имена (, отправленныеfind -print0
)-T -
:читает имена файлов из вывода stdin(find
)Если вы используете регистратор Linux и можете добавить конфигурацию ротации в каталог /etc/logrotate.d , в котором можно указать размер, формат и т. д...
Пример:
/var/log/test.log {
rotate 30
weekly
size=30k
compress
}
Вот шпаргалка по скриптам.