Хабы: *nix, C, Настройка Linux, Системное администрирование
Волей-неволей, я оказался в другой стране. Февральский Тбилиси встретил ветрами, доброжелательными людьми, безденежьем и необходимостью (после 6-летнего перерыва) в очередной раз вкатываться в IT. И я подписался админить первый подвернувшийся проект.
Основой проекта был сбор данных, который состоял из двух частей. Сначала куча бинарников сливала данные в один текстовый файл, который в процессе распухал до сотен гигабайт. Время от времени аналитик, (когда ему была необходима очередная порция данных, запускал его на разборку, скармливая его ещё одному бинарнику (назовём его "parser"). Случалось это иногда раз в неделю, а иногда и раз в месяц.
Сама система была разработана давно уволившемся программистом и, на удивление, уже лет 5+ работала без обслуживания и, при этом, без сбоев. Картину дополняли бардак в документации (если её таковой можно было назвать) и полное отсутствие исходников парсера. Но для админских задач они, как бы, не требовались. До поры.
Уже в конце первой недели от аналитика пришла просьба: "Файл очень большой, разбирается иногда пару дней, а работает парсер абсолютно молчаливо, ничего не выдавая на экран, и, поэтому, нельзя ли отобразить процент выполнения. Желательно видный через progress, так как через него отслеживаются и другие задачи".
Упомянутая выше документация заканчивалась одной интересной строчкой: "парсинг переведён в однопоточный режим из-за "гонок"". Из этой, не до конца понятной фразы, я вынес для себя, что раз парсинг идёт однопоточно, то нет никаких сложностей извлечь данные из "/proc". Поэтому: "Да без проблем," — ответил я."
Читать дальше →