Я использую следующий подход, чтобы определить, изменилось ли содержимое/атрибуты каталога:
cd /path/to/dir; ls -lnAR --time-style=+%s. | md5sum
Если вы также хотите отслеживать изменения в расширенных атрибутах:
cd /path/to/dir; (ls -lnAR --time-style=+%s.; getfacl -Rns.) | md5sum
В обычных обстоятельствах нет необходимости проверять содержимое файлов, поскольку время модификации файла уже указывает на изменение содержимого файла. Это также ускоряет всю операцию.
Примечания:
Если вы все еще хотите проверять содержимое файлов:tar c -C /path/to/dir | md5sum
или с расширенными атрибутами:cd /path/to/dir; (tar c.; getfacl -Rns.) | md5sum
Чтобы заставить его работать на более широком диапазоне систем, мне пришлось установить локаль, а также отфильтровать количество жестких ссылок и размеры каталогов из вывода ls с помощью awk:
cd /path;LC_ALL=C ls -lnAR --time-style=+%s.|awk '{$2=0;$1~/^d/&&$5=0;print}'|md5sum
Так и должно быть:
В Top есть «пакетный» режим, предназначенный для неинтерактивного использования, доступный с помощью -b
. Таким образом, этот скрипт записывает верхний вывод каждые 10 секунд:
#! /bin/sh
set -u
recording=/tmp/top_recording.txt
top_interval_seconds=10
top -b -d "$top_interval_seconds" > "$recording"
К сожалению, все процессы/задачи, кроме нескольких первых, являются избыточными, поэтому я использую Tr и Sed для просмотра отчета, оставляя только три верхних процесса каждого моментального снимка, который создает Top:
#! /bin/sh
set -u
recording=/tmp/top_recording.txt
regexp_first_few_lines='top'\
'[^\x00]*\x00'\
'[^\x00]*\x00'\
'[^\x00]*\x00'\
'[^\x00]*\x00'\
'[^\x00]*\x00'\
'[^\x00]*\x00'\
'[^\x00]*\x00'\
'[^\x00]*\x00'\
'[^\x00]*\x00'\
'[^\x00]*\x00'
export LC_ALL=C
< "$recording" \
tr '\n' '\0' | \
sed -E -e 's/\x00top/\ntop/g' | \
sed -E -e 's/^('"$regexp_first_few_lines"')(.|\x00)*$/\1/' | \
tr '\0' '\n' | \
less
Чтобы найти процессы с высокой -загрузкой ЦП в Less, используйте:
/[0-9] [A-Za-z] ([^ ]| [^ ]| [987])