Форум русскоязычного сообщества Ubuntu


Автор Тема: Отслеживание изменений размеров файлов в поддереве указанного каталога  (Прочитано 1402 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Di_zaer

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Добрый день.Начинаю изучать программирован на языке Shell. Столкнулся с такой проблемой, нужно написать код по заданию --- Отслеживание изменений размеров файлов в поддереве указанного каталога.( Отслеживание реализовывать путем периодического запуска  необходимой последовательности действий через определенный интервал времени) Вот кое-что прикинул #!/bin/sh

usage() {
        echo "$1 <dir>"
        exit 1
}

LAST=/tmp/last
THIS=/tmp/this

test $# -eq 1 || usage $(basename $0)

test -f $LAST || touch $LAST

find $1  -ls > $THIS

diff $LAST $THIS

mv $THIS $LAST

Правда, оно ищет любые изменения.
Так вот, собственно,  проблема в том , как сделать что-бы отслеживалась и выводилась  именно та информация , что нужна(по заданию),  а не вся инфа о файлах?

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
В чем выражается «отслеживание»: вывод определенного сообщения, размера и пр?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Di_zaer

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Di_zaer

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
что 38? Что вы имели ввиду?  ???

Оффлайн Cxms

  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Di_zaer,
find "$DIR" -type f -printf "%s %p\n" | sort -n -k1Это выводит список вида: "размер путь/файла" для всех файлов в директории DIR и поддиректориях, с сортировкой по возрастанию размера.
Этот вывод нужно циклично с интервалом сохранять в файл, и сравнивать с предидущим сохраненным файлом:
diff -s --suppress-common-lines "$FILE1" "$FILE2"Если будут различия в файлах (размеры) - они будут выведены.
Если нет - будет сообщение что их нет.

Вот:
Код: (bash) [Выделить]
#!/bin/bash

# Интервал (в сек.) между проверками
TIME_INT=10

DIR="$*"
[ -z "$DIR" ] && { echo -e "Не указана директория.\nИспользование: $0 <dir>"; exit 1; }
[ -d "$DIR" ] || { echo "Директория: $DIR не найдена."; exit 1; }

LIST1="/tmp/list1"
LIST2="/tmp/list2"

while true; do
find "$DIR" -type f -printf "%s %p\n" | sort -n -k1 > "$LIST1"
sleep $TIME_INT
find "$DIR" -type f -printf "%s %p\n" | sort -n -k1 > "$LIST2"
diff -s --suppress-common-lines "$LIST1" "$LIST2"
done

« Последнее редактирование: 30 Ноября 2015, 08:35:30 от Cxms »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
что 38? Что вы имели ввиду?  ???
А что
Да
Для отслеживания изменений есть команда watch
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Di_zaer

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Спасибо,буду разбираться
« Последнее редактирование: 30 Ноября 2015, 14:46:57 от Azure »

Оффлайн accipiter

  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Вообще есть incron, который позволяет запускать команду по событиям файловой системы.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12132
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
(Нажмите, чтобы показать/скрыть)

http://habrahabr.ru/post/66569/ - приличная статья по incron.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн Di_zaer

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Спасибо,буду разбираться
Вы спросили -
Цитировать
В чем выражается «отслеживание»: вывод определенного сообщения, размера и пр?
   я ответил,  -да. Тут имелось в виду вот это - вывод определенного сообщения, размера и пр.
 Так вот ,  вопрос, что такое 38???

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
вывод определенного сообщения, размера и пр.
Что именно из перечисленного?
  • Вывод сообщения: какого именно?
  • Вывод размера: всех файлов, измененных, …
  • пр: какая ещё нужна информация, названия измененных файлов например…

Просто приведите пример желаемого вывода.
« Последнее редактирование: 30 Ноября 2015, 20:46:13 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.101 секунд. Запросов: 25.