debian.org / О Debian Где взять Debian Поддержка Уголок разработчика Новости Wiki

Автор Тема: Функция запускается в двух экземплярах  (Прочитано 876 раз)

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

Оффлайн gardarea51

  • Старожил
  • ****
  • Topic Author
  • Сообщений: 700
  • Jabber: gard.area51@jabber.ru
Здравствуйте!
Задумался над сканированием файлов, которые кидают в сетевую папку 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

  • Гость
Re: Функция запускается в двух экземплярах
« Ответ #1 : 14 Апрель 2016, 15:40:28 »
"все уже придумано до нас"

clamfs
https://tracker.debian.org/pkg/clamfs
http://clamfs.sourceforge.net/
« Последнее редактирование: 14 Апрель 2016, 15:46:20 от Yrii »
 

Оффлайн gardarea51

  • Старожил
  • ****
  • Topic Author
  • Сообщений: 700
  • Jabber: gard.area51@jabber.ru
Re: Функция запускается в двух экземплярах
« Ответ #2 : 15 Апрель 2016, 07:07:16 »
С ней не выходит, почему-то для debian 7 (wheezy) ее нет в репозиториях, хотя можно поставить из Jessie, но не уверен, что хочу заюзать именно clamfsю
 

Русскоязычное сообщество Debian GNU/Linux

Re: Функция запускается в двух экземплярах
« Ответ #2 : 15 Апрель 2016, 07:07:16 »


Теги:
 

Си функция exit(0)

Автор mihail_1

Ответов: 2
Просмотров: 1430
Последний ответ 29 Июль 2013, 22:08:26
от smallNix