psql вывод в Debian испорчен

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

Потому что вы начинаете не так. Начни правильное дело. ☺

Подарок здесь -

StandardInput=socket

в файле служебной единицы. Это указывает на то, что демон ожидает сокет в качестве стандартного ввода, и ожидается, что systemd предоставит его при порождении демона. "Но что это за розетка?" один спрашивает. systemd не знает волшебным образом, какой сокет использовать, и, конечно же, не подключает службы к каким-либо старым файловым дескрипторам сокетов, которые случайно остались в процессе №1.

Ответ заключается в том, что, в то время как другие в WWW (несколько лет назад) сделали это по-другому, (более поздний) пакет OpenSUSE для atftpd запускает atftpd как полноценный сервис, активируемый сокетами . Об активации сокетов в systemd написано много. Это тонкий вопрос, и его объяснение выходит за рамки данного ответа. Вот что вам нужно знать об этой конкретной службе здесь и сейчас:

Вы, системный администратор, не запускаете / останавливаете службу atftpd, запуская / останавливая модуль службы . Вы запускаете / останавливаете блок socket . Когда сокет запущен, systemd контролирует его, и трафик к сокету заставит systemd сам запустить модуль службы , подключив службу к сокету, который активировал его.

Итак, команды здесь systemctl start atftpd.socket и systemctl stop atftpd.socket .(То же самое с enable и disable , конечно.) Также используйте systemctl status atftpd. {Service, socket} , чтобы увидеть состояние как сокета, так и службы единицы измерения.

(Вы заметите, что в файле atftpd.service нет раздела

[Install]

, а в файле atftpd.socket есть. Опять же, это раздача, что это сокет ] модуль, который администратор запускает / останавливает / включает / отключает здесь.)

Между прочим, содержимое вашего файла / etc / sysconfig / atftpd является подделка. Они не соответствуют atftpd.sysconfig в OpenSUSE . OpenSUSE соответствует тому, что systemd было сказано о демоне. Ваши локальные модификации не нужны в одном случае и совершенно неверны в другом.

Ваш служебный модуль systemd по умолчанию использует Type = simple , но ваш / etc / sysconfig / atftpd использует параметр - daemon . Несоответствие протокола готовности. Несоответствие протокола готовности приводит к тому, что службы не запускаются правильно или (что чаще всего) (ошибочно) диагностируются системой systemd как неисправные. Таким образом, у вас по-прежнему будет проблема, созданная вами, даже если вы переключитесь на управление блоком розетки вместо блока обслуживания. Удалите добавленную вами опцию - daemon . Ваш демон должен не разветвляться и завершаться, чтобы указать готовность. Это полноценный сервис, активируемый сокетами в OpenSUSE. При отправке файл правильный.

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

1
24.09.2018, 00:59
2 ответа

Как насчет

$ cat testfile
// Testing this
foobar
$ sed 'sx//\(.*\)x/*\1 */x' testfile
/* Testing this */
foobar
$
  • sx//:поиск строк, содержащих//
  • \(.*\)x:поместите оставшуюся часть линии в группу захвата 1
  • /*\1 */x:заменить оставшуюся часть строки на/*(начало комментария,C -стиль ), за которым следует содержимое группы захвата 1 (, упоминаемое как \1), за которым следует*/(конец комментария, стиль C -)
0
28.01.2020, 00:27

Другой подход :делает поиск и замену условным при совпадении комментария вообще:

sed '\!//! {s!!/*!; s!$! */!}' file

Это читается как:

  • если в строке есть шаблон //, то
    • заменить соответствующий текст на/*
    • , а затем замените пустую строку в конце строки на*/
0
28.01.2020, 00:27

Теги

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