LINUX.ORG.RU

Подскажите демон, который отслеживает какие файлы создают пользовательские программы

 ,


0

1

Что-то закончилось у меня место в хомяке, полез рабираться, а у меня в дот-директориях несколько десятков ГиБ всякого мусора. И непонятно ведь кому он принадлежит – названия вполне поизвольные, по ним не всегда можно вспомнить кто «насрал».

Есть у нас демон, который будет остлеживать создание файлов и записывать их в какую-то БД? Мол, user_prog создала директорию ~/.config/CompanyCoCoCo/trash.dat

fatrace например запустить и позапускать эти твои приложения. А я бы хотел например в расширенных атрибутах такую инфу хранить для возможности получения инфы если приложение было удалено.

anonymous
()

Мониторинг событий файловой системы

Эту утилиту inotifywaitможно использовать для прослушивания событий файловой системы и реагирования на них.

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

https://de-linux--console-net.translate.goog/?p=9704&_x_tr_sl=auto&_x_tr_tl=ru&_x_tr_hl=de&_x_tr_pto=wapp

https://www.baeldung.com/linux/sync-files-continuously-one-way

demo13
()
Последнее исправление: demo13 (всего исправлений: 1)
Ответ на: комментарий от demo13

inotifywait можно

Не можно. Просто сравни у inotify

           struct inotify_event {
               int      wd;       /* Watch descriptor */
               uint32_t mask;     /* Mask describing event */
               uint32_t cookie;   /* Unique cookie associating related
                                     events (for rename(2)) */
               uint32_t len;      /* Size of name field */
               char     name[];   /* Optional null-terminated name */
           };

и

           struct fanotify_event_metadata {
               __u32 event_len;
               __u8 vers;
               __u8 reserved;
               __u16 metadata_len;
               __aligned_u64 mask;
               __s32 fd;
               __s32 pid;
           };

у fanotify.

anonymous
()

Для анализа того, что где загажено, советую использовать ncdu.

Если нашёл место и ищешь процесс, который нагадил (и продолжает гадить), то можно положиться на возможности операционной системы и использовать утилиту типа inotifywatch (смотри маны для инструкции по применению, там ничего сложного).

Bfgeshka ★★★★★
()
Ответ на: комментарий от demo13
$ sudo fatrace -u -f O

ls(15748) [1000:1000]: RO  /usr/bin/ls
ls(15748) [1000:1000]: RO  /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
ls(15748) [1000:1000]: O   /etc/ld.so.cache
ls(15748) [1000:1000]: RO  /usr/lib/x86_64-linux-gnu/libselinux.so.1
ls(15748) [1000:1000]: RO  /usr/lib/x86_64-linux-gnu/libcap.so.2.75
ls(15748) [1000:1000]: RO  /usr/lib/x86_64-linux-gnu/libc.so.6
ls(15748) [1000:1000]: RO  /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.14.0
ls(15748) [1000:1000]: O   /etc/locale.alias
ls(15748) [1000:1000]: O   /usr/lib/locale/ru_RU.utf8/LC_IDENTIFICATION
ls(15748) [1000:1000]: O   /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
ls(15748) [1000:1000]: O   /usr/lib/locale/aa_DJ.utf8/LC_MEASUREMENT
ls(15748) [1000:1000]: O   /usr/lib/locale/ce_RU/LC_TELEPHONE
ls(15748) [1000:1000]: O   /usr/lib/locale/ru_RU.utf8/LC_ADDRESS
ls(15748) [1000:1000]: O   /usr/lib/locale/agr_PE/LC_NAME
ls(15748) [1000:1000]: CO  /usr/lib/locale/aa_DJ.utf8/LC_PAPER
ls(15748) [1000:1000]: CO  /usr/lib/locale/ru_RU.utf8/LC_MESSAGES
ls(15748) [1000:1000]: CO  /usr/lib/locale/ru_RU.utf8/LC_MESSAGES/SYS_LC_MESSAGES
ls(15748) [1000:1000]: CO  /usr/lib/locale/crh_RU/LC_MONETARY
ls(15748) [1000:1000]: CO  /usr/lib/locale/aa_DJ.utf8/LC_COLLATE
ls(15748) [1000:1000]: CO  /usr/lib/locale/ru_RU.utf8/LC_TIME
ls(15748) [1000:1000]: CO  /usr/lib/locale/br_FR.utf8/LC_NUMERIC
ls(15748) [1000:1000]: CO  /usr/lib/locale/aa_DJ.utf8/LC_CTYPE
ls(15748) [1000:1000]: RCO /
anonymous
()
Ответ на: комментарий от Aceler

пользователь - «root»

номер процесса - «16075»

имя процесса - «inotifywait»

убить процесс «inotifywait»

:~ # killproc inotifywait

:~ # ps aux | grep inotifywait

root 12387 0.0 0.0 5812 2048 pts/8 S+ 17:52 0:00 grep –color=auto inotifywait

:~ #

:-)))

demo13
()
Ответ на: комментарий от tempUser

Только непонятно, чем вам поможет демон? Если у вас в хомяке десятки гигабайты конфигов и данных программ, которые вероятно давно удалены. У меня весь хомяк 1.2G, все ненужное сразу же удаляю.

$ du -ahxd1 /home | tail -1
1.2G	/home
dmitry237 ★★★★★
()
Ответ на: комментарий от dmitry237

все ненужное сразу же удаляю.

А я – нет. Как ты вообще узнаёшь какие файлы добавились и где? Что удалять-то?

И в этом мне поможет этот демон. Он будет знать какая программа создала файл и мне будет проще принять решение нужен ли он мне.

tempUser
() автор топика
Ответ на: комментарий от tempUser

Как ты вообще узнаёшь какие файлы добавились и где? Что удалять-то?

Установил что-то, запустил, сразу видно что появился новый каталог или дотфайл, как-то так.

Он будет знать какая программа создала файл и мне будет проще принять решение нужен ли он мне.

Откуда он узнает про уже созданные файлы? Лежат они по своим каталогам мертвым грузом, ничто к ним не обращается, разве только какие-нибудь служебные приложения, которые никак не связаны с их созданием.

dmitry237 ★★★★★
()
Ответ на: комментарий от dmitry237

сразу видно что появился новый каталог или дотфайл, как-то так.

Ты линуксом пользуешься как бытовой машиной? Или это только запускалка какой-то софтины на работе?

Откуда он узнает про уже созданные файлы?

Ниоткуда. Это невозможно. Поэтому я говорю о демоне, а не просто программе, которая запустилась что-то сделала и всё.

tempUser
() автор топика
Ответ на: комментарий от tempUser

Поэтому я говорю о демоне

Ну и будет он висеть и ничего не делать, потому что к старым файлам ни одно приложение не будет обращаться. Дело, конечно ваше, но затея так себе

Кроме того обычно все это хозяйство имеет вменяемые названия, я вот смотрю в ~/.config, там нет ни одного непонятного. Вы же знаете, что установили/удалили?

dmitry237 ★★★★★
()
Ответ на: комментарий от tempUser

demon «new_file.service» как-то записывает новые файлы в «/var/log/new_file.log»

systemctl start new_file.service

systemctl status new_file.service

systemctl stop new_file.service

#!/bin/bash
NAME_DIR="tempUser"
SOURCE_DIR="/home/$NAME_DIR"
DATE=`date "+%d.%m.%H.%M"`
LOG_FILE="/var/log/new_file.log"

case "$1" in

    -install )
if [ -z "$(which inotifywait)" ]; then
    echo "inotifywait не установлен."
    echo "Установить inotify-tools package

    sudo zypper -n in install inotify-tools
    sudo dnf install inotify-tools
    sudo apt install inotify-tools
    sudo pacman -Sy inotify-tools
    "
    exit 1
fi

bxmd=`mktemp`
pwd > $bxmd
echo "[Unit]
Description=NEW_FILE
Before=multi-user.target
[Service]
Type=forking
Restart=on-abort
ExecStart=screen -dmS test bash -c \"cd `cat $bxmd` && ./new_file.sh -start\"
[Install]
WantedBy=multi-user.target
Alias=new_file.service
" > /usr/lib/systemd/system/new_file.service
systemctl daemon-reload
systemctl enable new_file.service
systemctl start new_file.service
systemctl status new_file.service
    ;;

    -start )
inotifywait --recursive --monitor --format "%e %w%f" \
--event move,create,delete $SOURCE_DIR \
| while read changed; do
    echo $DATE.$changed  >> $LOG_FILE 2>&1
done

    ;;
    -stop )
   killproc new_file.sh

    ;;
    *)
    echo "Usage: $0 {install|start|stop}"

esac
demo13
()
Ответ на: комментарий от anonymous

вообще-то вопрос был:

Есть у нас демон, который будет остлеживать создание файлов и записывать их в какую-то БД? Мол, user_prog создала директорию ~/.config/CompanyCoCoCo/trash.dat

… остлеживать создание файлов записывать их —-> /var/log/new_file.log

как пример:

24.07.11.44.MOVED_TO /home/TempUser/.mozilla/firefox/u5gbib21.default-release-1/datareporting/glean/db/data.safe.bin

24.07.11.44.CREATE,ISDIR /home/TempUser/Neuer Ordner

24.07.11.44.MOVED_TO /home/TempUser/Neuer Ordner/Textdatei.txt

24.07.11.44.CREATE /home/TempUser/.local/share/TelegramDesktop/tdata/user_data/media_cache/0/DC/0C606D1624F9

24.07.11.44.CREATE /home/TempUser/.local/share/TelegramDesktop/tdata/user_data/cache/0/9A/DE5E908F7198

24.07.11.44.CREATE /home/TempUser/.local/share/TelegramDesktop/tdata/user_data/cache/0/08/5B70182B8B6A

24.07.11.44.CREATE /home/TempUser/.config/GIMP/2.10/.goutputstream-ESLGA3

24.07.11.44.MOVED_FROM /home/TempUser/.config/GIMP/2.10/.goutputstream-ESLGA3

24.07.11.44.MOVED_TO /home/TempUser/.config/GIMP/2.10/profilerc

24.07.11.44.CREATE /home/TempUser/.config/GIMP/2.10/.goutputstream-441FA3

24.07.11.44.CREATE /home/TempUser/.local/share/Trash/info/Textdatei (1).txt.trashinfo

24.07.11.44.MOVED_FROM /home/TempUser/Downloads/Textdatei (1).txt

24.07.11.44.MOVED_TO /home/TempUser/.local/share/Trash/files/Textdatei (1).txt

24.07.11.44.CREATE /home/TempUser/.config/trashrc.lock

24.07.11.44.DELETE /home/TempUser/.config/trashrc.lock

где id/имя процесса-…

это твоё желание.

:-)))

demo13
()
Последнее исправление: demo13 (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ещё раз!!!!!!

вообще-то вопрос был:

Есть у нас демон, который будет остлеживать создание файлов и записывать их в какую-то БД? Мол, user_prog создала директорию ~/.config/CompanyCoCoCo/trash.dat

Ещё раз!!!!!!

ОТСЛЕЖИВАТЬ СОЗДАНИЯ ФАЙЛОВ !!!! … И ЗАПИСЫВАТЬ В —> !!!!

В моём примере «user_prog» —-> mozilla TelegramDesktop GIMP создают файлы и

demon «new_file.service» записывает новые файлы в «/var/log/new_file.log»

… а уж что с этим делать - пусть решает tempUser.

закончилось у меня место в хомяке !!!

и причём здесь «/usr/bin/*»???

и причем тут вообще uid/gid этого процесса ???

где id/имя процесса-…

это твоё желание… id/имя процесса ненужно!!!

:-)))

demo13
()