Может ли systemd обрабатывать демонов с двойной оболочкой?

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

На странице руководства по usermod говорится:

ВНИМАНИЕ usermod не позволит вам изменить имя пользователя, который вошел в систему. Вы должны убедиться, что указанный пользователь не выполняет никаких процессов во время выполнения этой команды, если имя пользователя числовой если изменяется числовой идентификатор пользователя. Вы должны изменить владельца любых файлов crontab вручную. Вы должны изменить владельца любых заданий at вручную. Любые изменения, связанные с NIS, должны производиться на сервере NIS.

Попробуйте войти в систему под другим пользователем и выполнить команду снова.

Если это невозможно, вы можете вручную отредактировать файл /etc/passwd (что, собственно, и делает команда usermod). В этом случае обязательно сделайте резервную копию файла на случай, если вы случайно сделаете что-то глупое.

4
19.10.2018, 20:25
1 ответ

Do I need to change the way I have done daemon setup code in C/C++ for the last decade?

Да.

Даже около десяти лет назад это было неправильным путем. Это было неправильно с начала 1990-х годов с контроллером системных ресурсов AIX. Пользователи daemontools выступали за отказ от подобных действий с конца 1990-х годов. Это не подходило для Upstart, которую основные операционные системы Linux начали внедрять в 2006 году. Это не подходило для работы с AT&T System 5 Release 3 inittabеще в начале 1980-х.

Это не подходит для systemd. Несмотря на то, что люди могут рассказывать вам о типе forking, они обычно забывают или даже не знают, чтобы сказать вам, что это специальный протокол готовности к обслуживанию, который зависит от двойного -разветвление выполняется определенным образом. Хуже того, способ, которым нужно это сделать, чтобы правильно говорить по протоколу, плохо сочетается с тем, как вы и другие будете писать свои программы на C/C++.

Еще в 2008 году мой «Часто задаваемый ответ» по этому вопросу существовал примерно три четверти десятилетия, и я и другие говорили людям то же самое в течение достаточно долгого времени, прежде чем я облек его в форму FGA.

IBM упоминала об этом в Красной книге с 1995 года.

Некий Джонни, -пришедший -в последнее время говорил то же самое,с точки зрения systemd, в руководстве по systemd всего 8 лет или около того. ☺

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

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

Дальнейшее чтение

4
27.01.2020, 20:54

Теги

Похожие вопросы