Я тут дунул и подумал - а возможно ли на уровне FS организовать следующее Есть файлопомойка, куда загружается всё подряд. При этом есть виртуальные директории, в которых видны только файлы из файлопомойки подпадающие под некие фильтры, типа директория с джыпегами, директория с сегодняшними файлами, директория с файлами больше 100Мб и тд
Исходные данные: Есть сервер логов, который упирается в I/O Я предполагаю, что возможно ситуацию можно несколько улучшить изменением стратегии хранения данных и более агрессивным сжатием (ибо по CPU есть большой запас)
Задача: Найти способ наглядного сравнения использования I/O на конкретном разделе. Так как выигрыш будет скорее всего не очень большим то нужна хорошая наглядность, идеальным вариантом мне видится наложение графиков.
Доступные средства: Из коробки на сервере есть atop(по которому и выявлен bottleneck), смысл показаний и способ использования которого мне пока не очень ясны.То ли нужно задействовать абстрактный busy%, то ли конкретные цифры TPS - хз Задача разовая, поэтому монстры мониторинга не велкам, однострочники на перле - велкам
Делаю скрипт для проверки на состояние процессов по списку. Так как процессов много, решил распараллелить проверку посредством Popen, но сразу встал в тупик
% cat test.py
from subprocess import Popen
result = Popen(['pgrep','-f','test'], shell = True)
% python test.py
pgrep: не указаны критерии соответствия
Наберите `pgrep --help' для дополнительной информации
% pgrep -f test
966
1495
Привет лорогугл Надумал я тут для самообучения попилить один велосипед, подскажи же мне модный стек технологий для этого, чтобы всё было молодёжно и асинхронно. Схема примерно такая: клиент подключается к серверу по HTTPS, шлёт POST/GET c XMLками в качестве контента, сервер дёргает DB, отдаёт выхлоп клиенту взад. Клиент - не браузер, а другое приложение, поэтому сверхнавороченный HTTP сервер и чудеса шаблонов наверное без надобности (в первом приближении клиент кроме HTTP 200 даже и кодов других не будет обрабатывать) Так как знаю только питон немножко, то в основе будет он Как я понял, сам сервер лучше поставить за Nginx, дальше пока не придумал.
Линк между свичами очень надёжен, но всё-же один и если он упадёт, то получим split-brain и оба свича станут VRRP Master Чисто ради расширения кругозора хочу понять можно ли пропускать VRRP пакеты сквозь bond(режим Fault tolerance) Ping mky, vel
Есть приложение которое принимает по UDP запросы от внешней железки. Для тестирования хотелось бы генерировать эти запросы локально, чтобы не зависеть от внешних факторов и делать это быстрее. Условия: 1. Приложение ожидает пакеты с определённого IP адреса, локально я такой на интерфейс назначить не могу. 2. Есть дамп пакетов, т.е. структура известна Вопрос: Можно ли и если можно то чем, используя существующий дамп генерировать запросы локально, гибко меняя нужные поля? Использование существующего дампа непринципиально, но это сэкономило бы время, а то вручную его воспроизводить слишком муторно Подумывал о какой-нибудь библиотеке для питона, но инструмент в общем тоже непринципиален.
Если для простого ssh/scp автокомплит zsh работает практически искаропки, то для такого формата автокомплит ниасиливает догадаться, что именно я от него хочу и приходится путь на удалённом хосте каждый раз писать полностью руками.
Руками, Карл.
Гугл сходу ничего не подсказал, лор, выручай меня скорее
Недавно открыл для себя peerflix и возрадовался. По мне это гораздо удобнее для киношек, чем классические торрент-клиенты, экономится много кликов и всё такое, но есть пара ньюансов юзабилити, которые портят дело. Вот что хотелось бы в идеале: 1) скачивается торрент файл 2) при открытии торрент файла запускается - плеер, если это единичный видео файл и сразу начинается проигрывание - торрент клиент, если это пачка файлов/или не видео файл 3) если игрался видео файл, то при открытии другого файла, старые данные подчищаются автоматом (открыл киношку, повтыкал пять минут, понял что отстой и открыл другую), при закрытии плеера старые данные тоже должны подчищаться (открыл киношку, повтыкал пять минут, понял что отстой и пошёл спать)
Я неспешно начал пилить велосипед на питоне (JS вообще не знаю, а нём наверное даже лучше было бы), реализовав логику второго пункта, но с 3м пунктом у меня иссякла фантазия (процессы peerflix плодятся при открытии следующего торрент файла, старые данные не подчищаются при закрытии плеера, итп), и поэтому я решил спросить совета у ЛОРа ЛОР, посоветуй мне, может это всё уже давно реализовано - проигрывание торрентов «без скачивания», лишних кликов и окон
Вот то, что пока получилось, может гуру питона ещё что подскажут
В честь вторника наброшу одну не очень весёлую историю из детства. Маленький приморский городок. Во время работ не очень в общем-то глубоко и не очень далеко от берега, произошёл несчастный случай с водолазом. Его вытащили, живого. Так как историю слышал из третьих рук, то всех деталей случая не знаю Глубины там не очень большие, поэтому может и не в декомпрессии дело, но в результате водолазу понадобилась кислородная подушка. Город маленький, время позднее и его мало. Сходу подушку не нашли ни в больнице, ни где либо ещё, родственники обзванивали всё что могли, от безысходности даже службу газа. Не нашли, итог печальный.
Что бы теоретики ЛОРа посоветовали в таких случаях?
Update:
Больше интересен теоретический (физика/химия в домашних или почти домашних условиях) аспект дела, чем социально-экономический, всё-таки раздел форума у нас соответствующий
В целях изучения питона и спортивного интереса делаю нечто вроде системы мониторинга с веб-интерфейсом
Python 2.6, сервер не имеет доступа в интернет, доустановка пакетов со сложными зависимостями (типа Paramiko) слишком геморройна, поэтому в идеале хотелось бы обойтись стандартной библиотекой
Пока что просто вывожу аптайм интересующих меня процессов.
Для единичного сервера это делается так
cat proc_uptime.sh | ssh server /bin/bash
Результат выглядит примерно так: 1324634 343245 546456 657567
Непосредственно в скрипте:
import commands
serverlist = [[] for i in range(SERVERS_NUM)]
for n in range(SERVERS_NUM):
cmd = 'cat test.sh | ssh server' + str(n+1) + ' /bin/bash'
serverlist[n] = commands.getoutput(cmd).split()
Т.е. получаем список списков, где для каждого сервера будет список аптаймов его процессов
Это всё даже работает и даже с приемлемой скоростью, но это пока все сервера в строю и нет ошибок.
При каких-то затыках с одним сервером в цикле у меня всё встанет колом.
Что я думаю нужно в идеале:
все запросы к серверам выполняются параллельно и отстреливаются на всякий случай после Х секунд неответа
Гугл подсказал мне для моего случая вполне подойдёт вариант с Popen
Но ман плохо раскуриваются и я так и не понял как мне с помощью Popen получить вывод скрипта в список (т.е. упорядоченно)
Лорогуру питона, посоветуйте мне полезных советов
UPDATE:
Что у меня пока получилось (Бог его знает насколько это канонично, феншуйно и надёжно, но ускорение почти линейное получилось)
serverlist = ['server01','server02','server03','fake_test_server','server04','server05']
running_procs = [Popen(['./wrapper.sh',server],stdout=PIPE, stderr=PIPE) for server in serverlist]
d = defaultdict((lambda:['N/A','N/A','N/A','N/A','N/A']))
while running_procs:
for proc in running_procs:
retcode = proc.poll()
if retcode is not None: # процесс отработал
res = proc.communicate()[0]
if res:
d[res.partition(' ')[0]] = res.partition(' ')[2].split(' ')
running_procs.remove(proc)
break
else: # процесс ещё работает, будем подождать
time.sleep(.1)
continue
Для наблюдения за аптаймом процесса использую вывод
ps -C process_name -o lstart=
всё хорошо работает, в случае если имя процесса уникально
Если же несколько пользователей запускают приложение, то получается чад кутежа во мгле ада
Меня интересует процесс конкретного пользователя, но вариант
ps -U username -C process_name -o lstart=
не срабатывает, ибо сцк выводит все процессы пользователя, т.е. ключ -C не применяется как фильтр
Я могу конечно заморочаться с грепами, но это неспортивно
Подскажи лор, есть ли красивый способ это сделать
Задача: убедиться, что процесс не завис (+ничего не сломалось на другой стороне), а что-то реально гоняет по сети Что именно гоняет это не так интересно, в принципе по растущим счётчикам Tx/Rx пакетов это вполне должно быть понятно.
Вопрос: не хочу стрелять из пушки по воробьям, и использовать tcpdump/nethogs, хотелось бы чего то лёгкого, воздушного, пригодного для скриптования. Подумал о парсинге /proc/$PID/net/* но сходу не понял за что там можно зацепиться. ЛОР, посоветуй
Kubuntu 14.10 Со случайной периодичностью пропадает звук, обычно замечаю во время просмотра кино. При этом в наушниках звук есть. Гугл и лор указывает на pulseaudio, но не уверен, тот ли этот случай, ибо рестарт пульсы не помогает - лечится только ребутом. В логах ничего про пульсу при этом нет, так что хз куда копать. При переборе вариантов поставил pulseaudio 5 из PPA - никакой разницы
Тренируюсь в разбора логов на питоне и поставила меня в тупик ситуация с модификаторами повторения
Надо сматчить названия name1,name2,name3,name4 в следующем случае
[Id] = 123
строка
строка
строка
строка
строка
строка
[Number] = {total(4)}
[Element 1]- one = 1
[Element 1]- two = name1
[Element 2]- one = 3
[Element 2]- two = name2
[Element 3]- one = 5
[Element 3]- two = name3
[Element 4]- one = 14
[Element 4]- two = name4
Я было захардкодил регексп на 4 элемента и это работает, но потом обнаржил что количество таких совпадений может различаться. В принципе количество можно брать из строки total, но пока пробую вариант с модификаторами числа повторений, идея вот такая:
\[Id\] = 123\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*(\[Element [0-9]\]\- first.*\n.*\[Element [0-9]\]\- second = (.*)){1,}
Есть длинный лог в котором встречаются записи такого вида:
timestamp hostname process Informational YYYYYYYYYYYY 127.0.0.1 Match result. ID[12345] bla-bla-bla
[Policy] = 54321
Мне надо вытащить сопоставление всех ID и Policy (перебираю все записи по ID).
Всё было бы тривиально, если бы Policy находился на одной строке с ID
Очевидное решение - вытянуть Policy на предыдущую строку, для чего надо удалить предыдущий перевод строки (blah-blah-blah слишком вариативен и его трудно использовать в качестве паттерна, для удаления следующего перевода строки)
Вопрос собственно в том как это сделать
ping sdio, emulek
чтобы подсветить success зелёным, ошибочные сообщения красным (остальные строки *тоже выводятся*, пусть и не так важны, поэтому grep не котируется)
Но в некоторых случаях было бы полезнее подсветить значения после маркера, а не сам маркер, т.е. в строках
Marker1: value1
Marker2: value2
надо подсветить value1 и value2, зная только имя маркеров.
На это моего знания perl/sed уже не хватает, плиз хелп
Для тестирования надо периодически убивать маршруты (заруливаю в blackhole для этого), но делать это двумя командами (ip r d существующий_маршрут;ip r a dest blackhole)скучно Никак не могу раскурить ман на тему ip route replace (ip route change), чтобы изменить маршрут в blackhole (или в prohibit) одной командой, ни один вариант не проходит