Неинтерактивная идентификация процессов, использующих много процессорного -времени

Я использую следующий подход, чтобы определить, изменилось ли содержимое/атрибуты каталога:

cd /path/to/dir; ls -lnAR --time-style=+%s. | md5sum

Если вы также хотите отслеживать изменения в расширенных атрибутах:

cd /path/to/dir; (ls -lnAR --time-style=+%s.; getfacl -Rns.) | md5sum

В обычных обстоятельствах нет необходимости проверять содержимое файлов, поскольку время модификации файла уже указывает на изменение содержимого файла. Это также ускоряет всю операцию.

Примечания:

  • cd /path/to/dir -делает контрольную сумму устойчивой к перемещению каталога
  • -n -делает контрольную сумму постоянной в системах с различным отображением uid/gid
  • -A -включает все файлы, включая (с точками, такие как -a ), кроме. и..
  • --time -style=+%s -без него изменения, сделанные в течение 1 минуты после внесения контрольной суммы, могут остаться неотслеживаемыми, этот вывод также сохраняется между копиями rsync (в отличие от --full -опция времени)

Если вы все еще хотите проверять содержимое файлов: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
0
29.08.2021, 22:49
1 ответ

Так и должно быть:

В 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])
0
30.08.2021, 17:13

Теги

Похожие вопросы