LINUX.ORG.RU

Первый публичный выпуск минималистичной системы инициализации Nitro

 , nitro,


0

2

Состоялся первый публичный выпуск нового проекта Nitro, развивающего минималистичную систему инициализации c функциями контроля над выполнением процессов. Проект развивает Лия Нойкирхен (Leah Neukirchen), одна из сопровождающих пакеты в дистрибутиве Void Linux. Код написан на языке Си и распространяется под лицензией 0BSD.

Nitro может применяться как в качестве init-процесса (pid 1), так и в форме непривилегированного процесса, контролирующего бесперебойное выполнение приложений в пространстве пользователя и перезапускающего задачи в случае сбоев. Поддерживается работа в Linux и FreeBSD, возможно применение в окружениях на базе стандартной Си-библиотеки Musl. В качестве областей применения упоминаются встраиваемые системы, образы ram-дисков (initramfs), контейнеры (Docker/Podman/LXC/Kubernetes), а также рабочие станции и серверные системы. Для управления работой сервисов и взаимодействия с init-процессом поставляется утилита командной строки nitroctl.

Вместо составных скриптов инициализации в Nitro применяется модель на основе выноса каждой функции в отдельный скрипт. Для каждого сервиса в иерархии /etc/nitro создаётся подкаталог, в котором могут размещаться следующие скрипты: setup - содержит команды, выполняемые до запуска сервиса; run - определяет сценарий запуска сервиса; finish - включает команды, выполняемые после завершения сервиса. Для организации ведения лога применяется символическая ссылка с именем log, указывающая на другой сервис, которому будет перенаправлен вывод. Для отключения автозапуска сервиса достаточно создать в его каталоге файл с именем «down», а для игнорирования сервиса следует добавить символ «@» к имени каталога.

Автором проекта отмечаются следующие достоинства Nitro по сравнению с другими системами инициализации:

  • Всё состояние хранится в ОЗУ, что упрощает работу в окружениях c дисковыми разделами в режиме только для чтения.
  • Архитектура на основе обработки событий, не использующая опрос в режиме полинга (polling).
  • Отсутствие операций выделения памяти во время работы (все буферы выделяются при запуске).
  • Ограниченное использование файловых дескрипторов во время работы.
  • Поставка в форме одного самодостаточного исполняемого файла и утилиты для управления системой.
  • Отсутствие стадий компиляции конфигурации - работу сервиса определяют простые скрипты в связанном с сервисом каталоге.
  • Наличие функции перезапуска сервисов после сбоя.
  • Наличие механизма ведения логов, которые могут включаться как по умолчанию, так и выборочно для отдельных сервисов.
  • Возможность построения цепочки обработки лога, охватывающей несколько сервисов.
  • Работа не зависит от точности выставления системных часов.
  • Поддержка запуска во FreeBSD через /etc/ttys.
  • Возможность сборки в форме миниатюрного статически скомпилированного исполняемого файла при использовании musl libc.

>>> Подробности на opennet

★★★★

Проверено: cetjs2 ()
Последнее исправление: dataman (всего исправлений: 4)

я так понимаю это не «система инициализации» операционки, а менеджер демнов системы.
хотя всех попояс и как обычно все смешивается в винигрет…

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

https://github.com/leahneukirchen/nitro/blob/master/NEWS.md

Таки первый публичный:

0.2 (2025-08-22)

  • initial public release
  • add NEWS.md file

А у кого https://git.vuxu.org/nitro/about/ открывается?

dataman ★★★★★
()
Последнее исправление: dataman (всего исправлений: 1)

Опять скрипты. Вроде бы уже выяснили, что лучше один раз всё на сишном коде написать и отладить, как в systemd - и вот опять очередной велосипед со скриптами.

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

Это чтобы потом героически этот сишный код поддерживать? Скрипты на порядок более живучие и гибкие - их для этого и создавали. А производительности там особо и не требуется.

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

Это чтобы потом героически этот сишный код поддерживать?

Будто бы скрипты поддерживать не надо.

Скрипты на порядок более живучие и гибкие - их для этого и создавали.

Скрипты создавали для небольшой автоматизации. А то, для чего их используют сейчас, все эти портянки - это несусветный бред.

liksys ★★★★
()

В билдрут добавят лет через 10 =(

SL_RU ★★★★
()

Проект развивает Лия Нойкирхен

Другие её интересные проекты – https://github.com/leahneukirchen/leahutils:

alerta, simple Prometheus-based alerting
arr, (re)arrange and select fields on each line
btac, print file in reverse order
extrace, trace exec() calls system-wide
fail, crash in various possible ways
holes, find runs of zero bytes
htping, periodically send HTTP requests
listening, check if a TCP server is listening
logcatch, run a process with private /dev/log
lr, list files, recursively
mblaze, Unix utilities to deal with Maildir
mlog, merge log files by timestamp
necho, minimal, sensible alternatives to echo(1)
nitro, tiny but flexible init system and process supervisior
notyet, a text-based recursive task tracker
nq, Unix command line queue utility
paddle, log processor to send logs from logdirs to TCP syslog
pds, parallel data substitution
px, search for processes and print top(1)-like status
rdd, random data dumper
rdumpfs, a rsync-based dump file system backup tool
reap, run process until all its spawned processes are dead
redo-c, an implementation of the redo build system in portable C with zero dependencies
rnl, remove trailing newlines
rwc, report when files change
snooze, run a command at a particular time
spit, atomically create a file with content
ulidgen, generate or tag lines with ULID
wcal, ISO weekly calendar
xe, simple xargs and apply replacement

dataman ★★★★★
()

Раньше начинающие программеры редакторы писали, теперь на инит переключились. Смысла не прибавилось, но всё лучше чем в подъезде курить и по гейклубам шляться :)

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

Запустить демона это и есть небольшая автоматизация. Примитивней только если иконки или юниты (безотносителньо того хтонического плода любви баобаба с бегемотом, который эти юниты сейчас запускает).

А поддерживать скрипты надо только если там реально накосячили при написании или если в системе какая то революция произошла, а не каждый раз когда компилятор обновился или уязвимость в libc нашли или новый анализатор увидел потенциальную утчку памяти или спектр-гаджет. Причём каждый второй Вася Пупкин сможет поправить самостоятельно.

kirill_rrr ★★★★★
()

Как он с сервисами системд, со всякими логиндами и удевами намерен уживаться? Они ведь для гнома необходимы.

Кстати, на главной странице есть вот это:

this software would not have been possible without detailed study
of prior systems such as daemontools, freedt, runit, perp, and s6.

Системд даже не в списке рассмотренных.

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

Скрипты на порядок более живучие и гибкие - их для этого и создавали

Ты не понимаешь сути. Сишный код задумывался для усложнения поддержки. RedHat хотели это контролировать, чтобы они могли в любой момент это менять как захочется. Например раз и в новой версии systemd ноутбуки кирпичатся - systemd портит материнские платы PC/ноутбуков по дефолту монтируя efivarfs на чтение-запись. И те кто не проходил официальные курсы вообще не понимают что происходит, а остальные соломку подложили и понимают что не зря деньги потратили.

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

Например раз и в новой версии systemd ноутбуки кирпичатся

Только некоторые глючные модели от MSI. Все квирки должны в ядро вноситься. Ядро должно смотреть, что ноут из списка «глючных», и не давать возможность монтировать именно на этом ноуте efivars для записи. Почему народ видит тут вину системд, а не MSI или ядра - я в упор не вкуриваю.

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

Запустить демона это и есть небольшая автоматизация.

Да, настолько небольшая, что в дебиане аж start-stop-daemon и кучу других хелперов написали. А еще не забудем про капабилитисы, права доступа, смену юзера, цгруппы и прочее, прочее. Ой, оказывается, не «небольшая».

А поддерживать скрипты надо только если там реально накосячили

Аналогично с сишным кодом.

не каждый раз когда компилятор обновился или уязвимость в libc нашли или новый анализатор увидел потенциальную утчку памяти или спектр-гаджет

Ужасно. Выкидываем все компилируемые программы. Особенно ядро, и переписываем его на баше. И заносим баш в процессор.

Причём каждый второй Вася Пупкин сможет поправить самостоятельно.

Не сможет. Ты вот, например, не осилил прочитать ман по systemctl и запутался в трех параметрах journald.

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

в дебиане аж start-stop-daemon написали.

Это который шаблон универсального инит-скрипта, который всё объявляет переменными и всё перепроверяет? То что я его не понял за 10 минут не говорит о том что это сложно. В конце конфов я даже не откопал и не перевёл официальной справки к нему.

А еще не забудем про капабилитисы, права доступа, смену юзера, цгруппы и прочее, прочее.

Почти всё из этого крайне опционально. В итоге всё один хрен сводится к последовательности команд запуска и остановки, т.е. к шелл-скрипту.

Не сможет. Ты вот, например, не осилил прочитать ман по systemctl и запутался в трех параметрах journald.

В трёх недокументированных командах journald, ведь ты более чем за неделю так и не смог ткнуть меня носом в то место, где его косячное поведение хотя бы упомянуто.

И при этом я ещё не увидел такого инит-скрипта, который не смог бы модифицировать под свою задачу если что то у меня не работало. Так что нет, сможет. Просто потому что накостылить и захардкодить с нуля под частный случай это задача для школьника-любителя, С тут знать не надо, просто владеть базой шела. Блин, суть юникса в т.ч. в том, что «быть пользователем» равозначно «взять и записать свои действия в скрипт».

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

А ещё вспоминаем, что bash/sh это высокоуровневый язык системных действий. Который появился ещё до того, как высокоуровневые фреймворки со сквозными api стали вебом и андроидом.

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

я так понимаю это не «система инициализации» операционки,

Вообще написано что первый процесс системы.

Nitro может применяться как в качестве init-процесса (pid 1),

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

Это который шаблон универсального инит-скрипта, который всё объявляет переменными и всё перепроверяет?

Это который запускает или останавливает демон.

Почти всё из этого крайне опционально.

Для современных сервисов - нет.

В трёх недокументированных командах journald, ведь ты более чем за неделю так и не смог ткнуть меня носом в то место, где его косячное поведение хотя бы упомянуто.

Ты либо опять забыл, либо просто врёшь. Во-первых, я не просто так сказал, что ты не осилил прочитать ман и выяснить, чем disable отличается от mask. Во-вторых, все опции прекрасно документированы, и помимо неумения пользоваться маном, вскрылось твое неумение пользоваться поиском. Ты просто необучаемый ламер.

А ещё вспоминаем, что bash/sh это высокоуровневый язык системных действий. Который появился ещё до того, как высокоуровневые фреймворки со сквозными api стали вебом и андроидом.

Это вообще никак к делу не относится и аргументом не является.

liksys ★★★★
()
Последнее исправление: liksys (всего исправлений: 3)

Лия
Long story short, I’m trans

Я как-то сразу так и подумал.

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

Или всё-таки его

Long story short, I’m trans—this means my gender identity differs from my assigned sex—and started medical transition in December 2017.

Friearch
()
Ответ на: комментарий от kirill_rrr

Как будто нормально монтировать конфиг материнки на запись по умолчанию.

Там права на запись только для рута.

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

Это который запускает или останавливает демон.

Запускает и останавливает демон где, в чём и как?

Для современных сервисов - нет.

В таком случае 90% линуксовых демонов устарели. Или может просто не требуют бессмысленных действий и способны запуститься без искуственного дыхания и подтирания соплей.

Во-первых, я не просто так сказал, что ты не осилил прочитать ман и выяснить, чем disable отличается от mask

У тебя сбой памяти. Я и без тебя прекрасно знал чем они отличаются. Только этот вопрос вообще никак не относился к проблеме - вот это ты забыл ну или скорее намеренно игнорируешь чтобы не отвечать на неудобные вопросы.

Во-вторых, все опции прекрасно документированы, и помимо неумения пользоваться маном, вскрылось твое неумение пользоваться поиском.

Бла-бла-бла, но показать мне нужное место мануала ты не в состоянии, потому что его там нет, и в отличии от тебя я его прочитал и убедился что там пусто, а ты продолжаешь рассказывать сказки.

Это вообще никак к делу не относится и аргументом не является.

Это не относится к вопросу дефектности системд, но данная тема не об этом, а о применимости/неприменимости специализированного языка управления системой для управления системой.

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

Да всё что угодно выполняется от рута. Первый раз что ли патч Бармина прилетал с обновлениям? А скриптом из сети?

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

Да всё что угодно выполняется от рута. Первый раз что ли патч Бармина прилетал с обновлениям? А скриптом из сети?

Вот по этому ядро и должно предотвращать окирпичивание ноута. А настройки биос-сетапа рут (и всё, что работает от рута) имеет право снести без проблем.

Вы поймите одно: юзерспейс, будь то системд или кто угодно другой, за поломки оборудования никогда не отвечает. За это отвечает производитель, и, в плохих случаях, ядро. И больше ни кто.

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

Запускает и останавливает демон где, в чём и как?

https://man7.org/linux/man-pages/man8/start-stop-daemon.8.html

В таком случае 90% линуксовых демонов устарели

Ты бредишь. То, что множество (не все, но значительная часть) демонов требует специальных условий запуска, уже ставит крест на скриптовых костылях. Между тем, systemd в состоянии справиться как с одним, так и с другим. Следовательно, скриптовые системы инициализации не нужны.

У тебя сбой памяти. Я и без тебя прекрасно знал чем они отличаются.

А теперь ты банально врёшь, клоун. Это ты пытался сделать systemctl disable journald и, по своему ламерству, вопил, что оно не работает. Потом я тебе сказал, что не надо это делать вообще, потому что можно логи писать в память, а потом сказал, что можно использовать mask, о котором ты не знал.

Бла-бла-бла, но показать мне нужное место мануала ты не в состоянии, потому что его там нет, и в отличии от тебя я его прочитал и убедился что там пусто, а ты продолжаешь рассказывать сказки.

И вот опять, очередное вранье.

  • Открываем раз - Ctrl+F по странице на mask UNIT.... Там же выше табличка с описанием состояний.

  • Открываем два - ищем на странице опцию Storage=.

Разумеется, все эти ссылки я тебе уже постил, а ты просто врёшь и изворачиваешься, лишь бы не признавать свое ламерство.

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

То что производитель сделал самоубийственный биос а ядро не озаботилось тем чтобы его холить и лелеять не отменяет того, что системд не должен был туда лезть на запись. Потому что юзерспейс не то что окирпичивать, а писать туда параметров не должен! А если надо - перемонтироваться и записать не сложно.

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

То что производитель сделал самоубийственный биос а ядро не озаботилось тем чтобы его холить и лелеять

Так производитель и должен (обязан!) был сделать соотв патч в ядро. Напишите ему. Вы ведь деньги ему заплатили, а Лёне - нет. Вот он пускай и решает эту проблему. Кстати, помимо патча в ядро, он может решить её ещё и биос-апдейтом. Так, может, стоит таки ему написать, а не пытаться в тикете системд сраться с Лёней? :) Проблема яйца выеденного не стоит, но вы же не хотите её решить, вам поорать охота, я угадал?

Потому что юзерспейс не то что окирпичивать, а писать туда параметров не должен!

Кто вам такое сказал? Это тот же cmos nvram, куда вполне можно писать.

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

https://man7.org/linux/man-pages/man8/start-stop-daemon.8.html

А, ну отлично, написали и написали. Я пользуюсь дебианом с выхода Ленни и до сих пор не знал что у них такая штука есть. Насколько мне известно ни Сис-В инит, ни системд его не используют.

То, что множество (не все, но значительная часть) демонов требует специальных условий запуска,

Множество? Открой свои любимые юниты и офигей от того, насколько примитивно запускается большинство. В 90% случаев «особые условия» это начать выполнить команду запуска от определённого юзера, с определённым конфигом и парой-тройкой параметров или хотя бы не раньше чем будут смонтированы ФС.

Там есть сложные случаи, но я что то кроме udev и d-bus ничего не вспоминаю. Собственно у меня больше таких нет.

уже ставит крест на скриптовых костылях

Всего лишь требует все эти условия реализовать в скрипте. Что проще чем захардкодить на С и пересобирать инит при каждом обновлении конфигурации. Или ты предлагаешь накодить прослойку, которая бдет читать текстовый файл с описанием требующихся действия? Где то я такое уже видел...

а потом сказал, что можно использовать mask, о котором ты не знал.

Ложь.

Потом я тебе сказал, что не надо это делать вообще

Не решает проблемы. Ты вообще не смог родить приемлимого решения, всё что ты смог родить это уровень менеджера техподдержки с недельным стажем, пытющегося залечить клиента. Соответственно так я к тебе и отношусь. И не важно насколько я не умею пользоваться системд, ТЫ им НЕ УМЕЕШЬ прользоваться.

вопил, что оно не работает

А что, работает? В системд наконец то реализовали режим отключения юнита? ОТКЛЮЧЕНИЯ а не УДАЛЕНИЯ из списка юнитов.

Разумеется, все эти ссылки я тебе уже постил, а ты просто врёшь и изворачиваешься, лишь бы не признавать свое ламерство.

И вот очередная чушьня, никак не связанная с вопросом. Покажи точное место в мануале журналда где описан способ остановить автозапуск журналда или хотя бы сказано что это невозможно сделать.

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

но вы же не хотите её решить, вам поорать охота, я угадал?

Я просто взял себе на заметку, что покупая материнку надо убедиться что она не окирпичиваемая. А если окирпичиваемая, значит должна стоить копейки или не покупаться вообще.

Это тот же cmos nvram, куда вполне можно писать.

Но зачем? Не существует ничего, что туда следовало бы записывать.

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

Я пользуюсь дебианом с выхода Ленни и до сих пор не знал что у них такая штука есть.

Не знаешь про start-stop-daemon, но мнение про системы инициализации имеешь.

Множество? Открой свои любимые юниты и офигей от того, насколько примитивно запускается большинство.

Открыл, увидел мульен параметров.

Что проще чем захардкодить на С и пересобирать инит при каждом обновлении конфигурации.

Не надо ничего пересобирать, всё настраивается опциями в декларативном конфиге.

Ложь.

Правда, правда. Ты не знал и гнал.

Не решает проблемы.

Решает.

А что, работает?

Еще раз: ты не понимаешь разницы между disable и mask.

Покажи точное место в мануале журналда где описан способ остановить автозапуск журналда или хотя бы сказано что это невозможно сделать.

Прочитай уже ссылки, которые я тебе дал, клоун.

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

Я просто взял себе на заметку, что покупая материнку надо убедиться что она не окирпичиваемая.

Это трудно проверить. Она не окирпичиваемая может быть именно таким методом. А каким-то другим, который потом найдут - может быть опять окирпичиваемая.

Но зачем? Не существует ничего, что туда следовало бы записывать.

https://github.com/linuxboot/uefisettings

anonmyous ★★
()

возможно применение в окружениях на базе стандартной Си-библиотеки Musl

🤡.png

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

То что я его не понял за 10 минут не говорит о том что это сложно.

А-ха-ха, вот уж не думал что даже тебе очевиден твой интеллектуальный уровень! :-D :-D :-D

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

лучше чем в подъезде курить и по гейклубам шляться :)

Вижу знатока, который попробовал в жизни всё. На самом деле гетеросексуальному мужчине лучше ходить в ЛГБТ-клубы широкого профиля.

И нет, иниты извращенцы пишут. SystemD задал очень высокую планку, которую в одиночку не перепрыгнуть, а у сообщества есть дела поважнее. Поэтому аналога SystemD без недостатков SystemD не будет, а будет нечто заведомо худшее. И будет просто чтобы было. С калькулятором или текстовым редактором хоть взаимодействовать приходится, и кому-то очередное поделие придется по вкусу.

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

Это чтобы потом героически этот сишный код поддерживать?

Будто бы скрипты поддерживать не надо.

Даже если и надо, то они в разы проще как по пониманию/изменению, так и по отсутствию наличия переконпилиции.

Скрипты создавали для небольшой автоматизации.

Что они и делают. Вы гдето там увидели длинные портянки? И даже если и увидели по принципу cat filename | wc -l то я вас разочарую, они чуть больше чем... заполнены комментариями.

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

Даже если и надо, то они в разы проще как по пониманию/изменению, так и по отсутствию наличия переконпилиции.

Скрипты тяжелее тестировать и отлаживать, и у них всё плохо с типизацией (в си лучше).

Вы гдето там увидели длинные портянки?

Посмотри шаренные библиотеки скриптов современных скриптовых инитов.

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

Зачем?!? Вы это сюда притащили? Мои глаза сломались ещё в начале этого списка. Но чисто рандомно тыкнул на «px, search for processes and print top(1)-like status» Это вот реально для нетакуиков в стиле «Я ж тоже погромист и кое что умею»?

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

Раньше начинающие программеры редакторы писали, теперь на инит переключились.

Нет, начинающие программеры начинали с игорь :)

anc ★★★★★
()

Для каждого сервиса в иерархии /etc/nitro создаётся подкаталог, в котором могут размещаться следующие скрипты

Я правильно понял, что зависимости туда не завезли?

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

Ты не понимаешь сути. Сишный код задумывался для усложнения поддержки.

Изначально применительно к истории появления онтопика было наоборот :)

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

Скрипты тяжелее тестировать и отлаживать

А не пишите портянки на 100500 строк. Ну и на примере bash откройте для себя set -x;set -v Все уже давно придумано за вас.

и у них всё плохо с типизацией

А надо? Нет, вот реально оно надо в инит скриптах?

Посмотри шаренные библиотеки скриптов современных скриптовых инитов.

Прозвучало как заклинание. Можно подробностей?

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

Все уже давно придумано за вас.

Как у тебя всё просто. Настолько, что у вас в мире даже shellcheck не существует, чтобы хоть как-то справляться с этой помойкой.

А надо? Нет, вот реально оно надо в инит скриптах?

Да. Отсутствие слабая динамическая типизация ведет к ошибкам и проблемам верификации.

Прозвучало как заклинание. Можно подробностей?

Можно. Все скриптовые иниты рано или поздно разрастаются до километровых портянок из-за того, что существует множество сервисов, для которых требуются специфические условия запуска. Такие функции выносят в библиотеки, которые затем сорсятся из скриптов.

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

Вы гдето там увидели длинные портянки?

Я лично вообще никогда не трогал инитскрипты, но читал этот занимательный пост:

systemd 246 (комментарий)

отследить pid нельзя из-за трипл-форков, start-stop-daemon абсолютно беспомощен, а делать pkill на stop (это делает инитскрипт, который поставляется с дженкинсом) перестает работать когда дженкинсов больше одного . . . Передавать дженкинсу параметр, чтобы он светился в имени процесса тоже не выходит.
kaldeon
()
Ответ на: комментарий от kirill_rrr

Блин, суть юникса в т.ч. в том, что «быть пользователем» равозначно «взять и записать свои действия в скрипт».

Суть в KISS хоть он не из этих ваших юниниксов.

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

слабая динамическая типизация ведет к ошибкам и проблемам верификации.

Она приводит к ошибкам, когда -1 пытаются вернуть вместо false, но такой род ошибок чужеземен в шелле. В шелле слабая/динамичная типизация проявляется в пайпах и является основным достоинством. Если бы в однострочнике grep -l interface $(ls |grep java) |sed ‘s/^/i: /’ >interfaces пришлось с самого начала до конца сохранить автоматически-выводимую информацию о том, что в >interfaces пишется не просто поток байт, а массив UTF-8-валидных имён файлов, то написать столь же простой скрипт было бы нереально.

kaldeon
()
Ответ на: комментарий от kaldeon

Достоинства шелла заканчиваются ровно на этих однострочниках. Потому что когда у тебя появляются массивы и развесистая логика, или сложные данные - всё, тушите свет.

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

Для современных сервисов - нет.

Та шо ви говорите... От я таки на днях запускаю sshd с ключиком -d в варианте однострочника while [ 1 ]; do... дальше надеюсь поняли, и оно таки робит. И это про причине не робящих «сервизов» а мне таки оно надо.

anc ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.