>>Или какие именно проблемы решают
> КАК ОН МОГ ПРИКОСНУТЬСЯ К СВЯТОМУ?! Портит священный UNIX своими руками! Вызывайте
> инквизицию! А, нет, всего лишь написал несколько утилит. Не в вашей
> ли BSD это части базовой системы?Какие эмоции и экспрессии! Однако вопрос "какую проблему решают" все эти тяп-ляпочные реализации - так и остался без ответа.
>>В экплицитном "не юниксе" нашли "фундаментальную проблему" в дизайне того, чем по собственным заявлениям, не являются и от чего дистанцируются.
> В FreeBSD нашли ту же проблему и решают ее добавлением новых сисколов.
> Не системдисты ли пробрались в кернел-тим? Ведь никакой проблемы нет.
Для реализации сисколов понадобилось полтора миллиона строк кода? Нет? Значит не системдисты.
>>вставив нехилый вендорлок от красной шляпы.
> В FreeBSD добавили новый API. Погодите, нет, ЭТО ДРУГОЕ.
lib/libc/sys/Makefile.inc | 5 +-
lib/libc/sys/Symbol.map | 3 +
lib/libc/sys/cap_new.2 | 4 +-
lib/libc/sys/pdfork.2 | 182 ++++++++++++++++++++
sys/compat/linux/linux_fork.c | 8 +-
sys/conf/NOTES | 3 +
sys/conf/files | 1 +
sys/conf/options | 1 +
sys/kern/capabilities.conf | 2 +-
sys/kern/init_main.c | 3 +-
sys/kern/kern_descrip.c | 30 ++++
sys/kern/kern_exit.c | 82 +++++----
sys/kern/kern_fork.c | 96 ++++++++++-
sys/kern/kern_kthread.c | 2 +-
sys/kern/kern_sig.c | 31 ++++
sys/kern/sys_procdesc.c | 524 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sys/kern/syscalls.master | 8 +-
sys/sys/capability.h | 7 +-
sys/sys/file.h | 1 +
sys/sys/proc.h | 6 +-
sys/sys/procdesc.h | 119 +++++++++++++
sys/sys/unistd.h | 5 +-
sys/sys/user.h | 4 +
Т.е. для вас что полуторамиллионнострочный, постоянно "улучшаемый" и изменяемый комбайн, что тройка сисколов с фиксированной реализацией на 600 строк кода - однофиолетово? Яснопонятно.
>>Угу, применение технологий начала 2000-х автоматически означает "фу, костыли!".
> Поконкретнее, пожалуйста. Что за технологии начала 2000х?
>> Хотя если запускать сервис в именованном контейнере
Ну можно и поконкретнее:
Смотрите, магия:
запускаем:
jail -c -u user path=/ name='nametag' command=foo
останавливаем:
jail -r nametag
а можно:
pkill -j nametag -signal foo
И никаких PID-файлов.
А можно и PID файл, но без гонок:
pkill -j foobar -F pidfile -signal
Делаем обертку для сервиса:
#!/bin/sh
# PROVIDE: some_service
# REQUIRE: LOGIN
. /etc/rc.subr
name="some_service"
rcvar=some_service_enableload_rc_config $name
start_cmd="jail -c -u user path=/ name='some_service_jail' command="foobar"
stop_cmd="jail -r 'some_service_jail'"
run_rc_command "$1"
# service some_service start
# service some_service stop
И никаких PID-файлов, отслеживаний и гонок.