LINUX.ORG.RU

inotify,incron, но как создать условие, если...

 


0

1

Всем привет и хороших выходных, да и вообще не болеть.

Такой вот вопрос. да...
<<<Нужно создать определенное действие, которое автоматом бы выполнялось, если в определенной директории не было никаких файлов в течении 5 минут.>>>
incron как бы позволяет выполнить похожий момент, но инфы по нему как-то мало. Знал бы больше, может и подстроил его под свою задачу.
IN_DELETE — Файл/директория удален(а) в отслеживаемой директории
IN_DELETE_SELF — Отслеживаемый(ая) файл/директория был(а) удален(а)
Каких файлов? Определенных? Если по маске, то не получится ли так, что при удалении любого из файлов, incron уже начнет совершать действие. 2. Если даже и при удалении/перемещении всех файлов, то запуск действия сразу - то же не вариант.

★★★

5 минут с момента как в директории исчез последний файл? Ок.

Если по маске, то не получится ли так, что при удалении любого из файлов, incron уже начнет совершать действие.

Мне лень читать доки по incron, но не проще ли обрабатывать в скрипте? В смысле тупо по удалению запускать скрипт, который делает

[ -f /tmp/_tmp_on_dir_empty_bycicle ] && kill `cat /tmp/_tmp_on_dir_empty_bycicle`
echo $$ > /tmp/_tmp_on_dir_empty_bycicle
sleep 300
[ $(ls -A /твоя/директория) ] && rm /tmp/_tmp_on_dir_empty_bycicle && exit

# тут  остальной код
rm /tmp/_tmp_on_dir_empty_bycicle

Можно придумать и что-нибудь умнее, конечно.

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

Вся соль в ключе -A. И не подумал бы.
Благодарю :)

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

Это немного другое условие же. «Каждые 5 минут проверять, не пустая ли директория и если пустая в момент проверки — делать supervisorctl restart» против «Проверять, не пустая ли директория на протяжении 5 минут и если она стоит пустой — делать supervisorctl restart».

x3al ★★★★★
()
Последнее исправление: x3al (всего исправлений: 1)
Ответ на: комментарий от x3al
[ -f /tmp/_empty ] && kill `cat /tmp/_empty`
echo $$ > /tmp/_empty
sleep 1
[ $(ls -A /home/iron/1/tmp) ] && rm /tmp/_empty && exit
-bash: [: слишком много аргументов


башрс стандартный. Пробелов нет в пути. В vim лексемы и $ светятся красным.

TERM=xterm-256color
SHELL=/bin/bash
SSH_CLIENT=192.168.1.2 64354 22
SSH_TTY=/dev/pts/0
USER=iron
...
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
PWD=/home/iron/1/tmp
LANG=ru_RU.UTF-8
SHLVL=1
HOME=/home/iron
LOGNAME=iron
SSH_CONNECTION=192.168.1.2 64354 192.168.1.26 22
LESSOPEN=| /usr/bin/lesspipe %s
LESSCLOSE=/usr/bin/lesspipe %s %s
_=/usr/bin/env
OLDPWD=/home/iron
cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.5 LTS"
NAME="Ubuntu"
VERSION="12.04.5 LTS, Precise Pangolin"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu precise (12.04.5 LTS)"
VERSION_ID="12.04"

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

[ $(ls -A /home/iron/1/tmp) ]

[ "$(ls -A /home/iron/1/tmp)" ]

Писал на коленке, забыл экранировать. Позор мне.

x3al ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.