Слово скрипт ведь не просто так в кавычки взял. Это к тому, что может понадобиться поддерживать работу произвольного исполняемого файла. Но это я уже максимально широкий контекст вопроса рассматриваю. PS Скрипты на компилируемых языках вполне себе имеют право на жизнь, в том же Golang не обязательно копилять бинарь.
тикль тоже так умеет Прекрасный пример для начинающих линуксоидов. Прежде, чем шариться по интернетам, посмотри сначала в репозиториях — скорее всего там уже есть искомое, и ты зря тратишь время. Сколько раз я так попадался...
так и я о том Смотрите: сначала вопрошающий сообщил, что он запилил второй скрипт — управлятор (на питоне?..) но ему решение кажется некошерным; потом ему подсказали, что можно припахать системду (создать демона); я показал, как можно перезапускать однострочником; коллега предложил более продвинутую версию управлятора на шелле; наконец, появилась ссылка, где черным по-английскому написано: посмотри в репу, братан (хлопок по лбу: ипона мать!) Тут вообще можно было бы просто написать: man monit. Лично я терпеть не могу линуксовых снобов, красноглазиков-гордецов, презрительно цедящих через губу «man bash» или «man find». Я их называю «вманопосылатели». Надо же понимать, что человек спрашивает не потому, что не знает про эти англоязычные справочники, а потом, что они — не учебники. Новичку там темный лес, особенно когда с английским вообще слабо. а со специфическими терминами вообще швах. Но вот в таком случае, лаконичный ответ «man monit» у меня вызвал бы однозначную реакцию: спасибо, брат! Было у меня такое, и не раз. P.S. Рекомендую вместо «man bash» посылать человека сюда и сюда.
А зачем в вышеупомянутой задаче ставить дополнительный софт, если стандартные средства линукс-систем это из коробки поддерживают? Обычный сервис, в частности systemd-юнит справится с такой задачей, но без костылей и велосипедов.
На хабре как раз на эту тему камент: И еще важное замечание: Системда неплохая штука, но очень уж перегружена чертовой магией. Только в мэйнстримовых дистрах.
«На уровне операционки — systemd есть уже везде. Там, где нет — это маргиналы, которые скорее всего знают, как жить без него». Из комментов к той же статье на хабре. И я с этим согласен на 146%. Тогда sd_notify. На нём и watchdog (ситуация, когда скрипт «завис» внутри себя, но не упал) реализуется элементарно, в три с половиной строки.
Так-то да, но слишком много до *уя. Имхо про системду. Alpine Linux, *WRT и ненавидимый ыкспертами опеннета докер смотрят на systemd с выразительно написанным на лицах WTF? (и где-то снизу попискивает выродок андроид, обнимая бастарда(иху) жабу с ее activities: моя прелессссссть!) А там точно не припрятано *бучей магии, типа DefaultStartLimitBurst?
А это не магия, а нормальное поведение. Если служба падает 5 раз подряд за 10 секунд, то с ней очевидно что-то фундаментально не так. Это как раз маргиналы, которые скорее всего знают, как жить без systemd.
«Магия», это неочевидное поведение по умолчанию, о котором надо заранее знать, иначе можешь попасть впросак. Это не эпитет, это термин такой в программировании (не вам, это для несведущих). Со службой может быть «что-то не так» отсутствие интернета, который хз, когда появится, и на сколько появится. А когда появится, надо бы выплюнуть накопленные логи. Простой тупой while true это обеспечит именно что искаропки. Хитро выдуманный сисетемд — нет. Он считает себя умнее пользователя. Взял, и бросил после пяти попыток. С хера ли после пяти? С хера ли вообще бросил работу? Прям, как винда.
Это абсолютно очевидное поведение, перестать пытаться запускать падающее раз в две секунды поделие. А насчёт «заранее знать» — читайте доки, они рулез. Если она при этом падает — нахрен такую службу. Просто нахрен. Это типичное ill behaviour, которое мастдай. Потому что нет такого понятия «интернет», есть поднятый сетевой интерфейс. И да, разумеется: [Unit] Wants=network-online.target After=network.target network-online.target Развелось выдумывателей велосипедов, чихнуть некуда.
Охренеть, какое очевидное. Always — это, ВНЕЗАПНО, вовсе не означает «всегда», а означает «брошу нахрен через пять попыток, никого не предупредив». Да-да-да, я знаю, там где-то внизу мелким шрифтом. Их там полторы мегатонны. Не слишком ли много для простого перезапуска скрипта? Апач не пробовали запускать до поднятия интерфейса? Забавно слышать это от адепта гигантского склада велосипедов .
Так вы всё-таки чего хотите — интернет или поднятый интерфейс? Второе я только что привёл. Забавно слышать это от юниксоида.
Ну если ты пользуешься не мейнстримовым дистрибутивом, а чем-то хоббийным и узкоспециализированным, то ты либо сделал хреновый выбор непонятно зачем (бес попутал), либо сделал это осознанно с пониманием последствий и причин. Во втором случае перед тобой нет таких примитивных вопросов, потому что ты уже разбираешься в системе. Я пользователь линукса на работе (софт под него пишу), и на мой взгляд эти определения пересекаются практически полностью. Я люблю серверный линукс, но ненавижу десктопный. Пожалуй это лучшее, что случилось с линуксом в этом тысячелетии. И он реально сильно все упростил по сравнению с бардаком, который был до него. С ним стало реально проще - в паре компаний делал инфраструктуру кодом. Узкоспециализированные системы.
ну уж прямо в свидетели меня записал я так, мимо проходил. тыж знаешь, для меня любой линукс - тот еще темный лес. Оно просто все дальше и дальше от KISS, а меня это расстраивает, я люблю все, что попроще.
Только что заюзал магию btrfs для расширения системного раздела. Просто приаттачил второй раздел на том же ssd, который создал на пустом месте. Чпок! И готово. Пустое место образовалось после клонирования через dd со 120 накопителя на 240. Не все магии одинаково грабелесодержащие!
Магию lvm точно так же можно задействовать. И расширять на добавленное место хоть чёрта лысого, лишь бы fs расширение поддерживала. А зачем второй раздел-то создавать? Можно же первый растянуть.
BRTFS не нуждается в костылях LVM. Она сама все это умеет. Да и вкрячить LVM на «живой» накопитель не так просто. Системный раздел ресайзить на лету? Если система и позволит, операция потенциально опасная. Тем более, я здесь, а сервер там — у админа уиндовс онли. Я не рискнул. Да и зачем? BTRFS без разницы, на скольких разделах или даже устройствах жить. Попутно убедился, что ничего не надо прописывать в конфигах. Аттач прописался в самой FS и действует после перезагрузки. В оф. вике ни слова про это не сказано, как и в нескольких нарытых howto. До этого был опыт расширения BTRFS в облаке (не системного раздела, а стореджа). Но там я создавал ФС прямо на RAW блочном устройстве, никаких разделов. Админ просто добавил ресурс, а я просто сделал btrfs filesystem resize, емнип.
Чего там опасного? growpart /dev/sdX 1 (ну или parted, без разницы) btrfs fs resize max /mounted Всё.