Триггер, если размер каталога превышает порог

Я записал сценарий оболочки в данные резервного копирования к s3, и я хочу инициировать этот сценарий оболочки, когда когда-либо системное пространство памяти идет очень важное, позволяет, говорят, когда система достигает 80% своей способности. Я знаю, что существуют утилиты как часы, которые контролируют системный размер, но они - триггеры уровня, т.е. они контролируют регулярно. То, что я хочу, является граничным триггером (вид обратного вызова, триггера), который активируется на вышеупомянутом определенном условии. То, что лучший способ состоит в том, чтобы записать такому включать debian, основывало систему. Предложите методы в ударе, C, C++, Python или Java.

То, что я подразумевал под граничным триггером, - то, что каждый раз, когда состояние системы очень важно т.е. использование выше, говорят, что должны быть сгенерированы 80% за триггер. Я не хочу опрашивать каждый говорить 1 час для проверки состояния.

Позвольте мне уточнить немного о моем варианте использования. По каждому запросу (через получают или отправляют API), тело запроса продвинуто к kafka. Скажите, что kafka понизился затем, журналы записаны в систему, и теперь у меня есть сценарий, который поворачивает вход в систему s3 только, когда системное состояние очень важно.

В этом случае, поскольку Вы видите, что kafka привычка понижается довольно часто. Скажите, что это понизилось один раз в 6-месячный также - поток для проверки размера каталога, каждый 1 час является просто тратой ресурса. Именно поэтому я хотел граничный триггер.

Я также столкнулся с сервисом, известным как inotify. просто задающийся вопросом, действительно ли это является лучшим, мы можем сделать (мудрая производительность)?

Любая справка

Спасибо

2
задан 17 July 2016 в 11:41

1 ответ

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

if [ $(df / --output=pcent | awk -F '%' 'NR==2{print $1}') -ge 80 ] ; 
then 
   # do something here 
fi 

Это в основном звонит df команда с выводом, ограниченным использованием процента и / файловая система и обрезки вывод так, чтобы только процент был возвращен. Если бы процент больше или равен 80, он выполнил бы то, что Вы помещаете после # do something here комментарий.

Если Вы хотите непрерывно рабочее решение, вот сценарий Python, который проверяет Ваше использование файловой системы каждые 0.25 секунды. Я записал простую функцию обертки для subprocess.check_output , таким образом, можно использовать это для легкого размещения вызова в сценарий туда в форме списка строк (который является в основном этим: ['brackets', 'and' , 'quotes'] )

#!/usr/bin/env python
import subprocess
import time
import sys

def run_cmd(cmdlist):
    # function for running 
    try:
        stdout = subprocess.check_output(cmdlist)
    except subprocess.CalledProcessError:
           pass
    else:
        if stdout:
            return  stdout

fs_usage = ""

while True:
    fs_usage = run_cmd( "df / --output=pcent".split() )
    if int(fs_usage.split("\n")[1].strip().split("%")[0]) >= 80 :
        # make call to your backup script here !
        # Use list format
        run_cmd( [ 'notify-send','Hello','World'  ]  )
        sys.exit(1)
    time.sleep(0.25)
0
ответ дан 2 December 2019 в 10:26

Другие вопросы по тегам:

Похожие вопросы: