Функция запускается в двух экземплярах

Автор gardarea51, 14 апреля 2016, 14:47:47

« назад - далее »

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

gardarea51

Здравствуйте!
Задумался над сканированием файлов, которые кидают в сетевую папку samba, антивирусом.
Наваял скрипт:
#!/bin/bash

clamav-scan-files ()
{
   dir=$1
   inotifywait -m -q -r -e create --format '%w%f' $dir | \
   while read line; do clamscan -r --no-summary --move=/mnt/data/shares/admins/Quarantine "$line" >> \
   /var/log/clamav/scan-files.log 2>&1 ; done
}

clamav-scan-files /mnt/data/shares/public/ &
clamav-scan-files /mnt/data/shares/mycats/ &
clamav-scan-files /mnt/data/shares/office/ &

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

После запуска скрипта вижу вот что:
root@gw:~# ps aux | grep scan
root      2782  0.0  0.0  13072   704 ?        Ss    2015   0:04 /sbin/mdadm --monitor --pid-file /run/mdadm/monitor.pid --daemonise --scan --syslog
root     45770  0.0  0.0  11920   636 pts/1    S    16:41   0:00 /bin/bash executable_scripts/clamav-scan-files
root     45771  0.0  0.0  11916   640 pts/1    S    16:41   0:00 /bin/bash executable_scripts/clamav-scan-files
root     45772  0.0  0.0  11916   640 pts/1    S    16:41   0:00 /bin/bash executable_scripts/clamav-scan-files
root     45774  0.0  0.0  11920   396 pts/1    S    16:41   0:00 /bin/bash executable_scripts/clamav-scan-files
root     45777  0.0  0.0  11916   400 pts/1    S    16:41   0:00 /bin/bash executable_scripts/clamav-scan-files
root     45778  0.0  0.0  11916   392 pts/1    S    16:41   0:00 /bin/bash executable_scripts/clamav-scan-files
root     45781  0.0  0.0   9016   872 pts/1    R+   16:41   0:00 grep scan
root@gw:~# ps aux | grep ino
root     45773  0.0  0.0   6264   636 pts/1    S    16:41   0:00 inotifywait -m -q -r -e create --format %w%f /mnt/data/shares/public/
root     45775  2.8  0.0   7404  1732 pts/1    S    16:41   0:00 inotifywait -m -q -r -e create --format %w%f /mnt/data/shares/office/
root     45776  0.1  0.0   6504   764 pts/1    S    16:41   0:00 inotifywait -m -q -r -e create --format %w%f /mnt/data/shares/mycats/
root     45783  0.0  0.0   9012   876 pts/1    R+   16:41   0:00 grep ino

inotifywait - 3 экземпляра, а самой функции аж 6, по две на каждый вызов.
Подскажите почему так получается.

ps: ответить смогу уже только завтра, побежал за ребенком в садик.

Yrii

#1
"все уже придумано до нас"

clamfs
https://tracker.debian.org/pkg/clamfs
http://clamfs.sourceforge.net/

gardarea51

С ней не выходит, почему-то для debian 7 (wheezy) ее нет в репозиториях, хотя можно поставить из Jessie, но не уверен, что хочу заюзать именно clamfsю