/etc/init.d/rsyslog {start | stop | restart} : Нужно, чтобы это работало

Вопрос или проблема

Я прочитал ответ/комментарии в теме
Разница между /etc/init.d/ssh start и service ssh start.

Но мне нужно, чтобы этот метод /etc/init.d работал. У меня есть некоторые автосгенерированные скрипты, которые вызывают метод /etc/init.d только. Не могли бы вы любезно предоставить мне какое-либо решение/обходной путь для этого?

Последний ответ — это способ решения проблемы установки defense4all о “Не удалось запустить службу rsyslog”. Эта проблема вызвана ошибкой rsyslog (может быть, я нашёл это на других сайтах), вы можете использовать service rsyslog вместо /etc/init.d/rsyslog, так что вы можете отредактировать файл в кодах defense4all, чтобы решить эту проблему.

В файле:

../defense4all/dfapp.aggregate/src/install/config_rsyslog.bash

измените последние строки:

/etc/init.d/rsyslog stop > /dev/null 

на:

service rsyslog stop

и:

/etc/init.d/rsyslog stop > /dev/null   

на:

service rsyslog start

И затем пересоберите проект, чтобы создать файлы .deb или .rpm. Надеюсь, это поможет вам.

Вы столкнулись с этой проблемой, потому что скрипт rsyslog в более новых версиях Ubuntu написан для управления upstart, а не традиционным демоном init.

Я видел ваше решение в комментариях выше. Другой обходной путь, который позволяет вашим автоматизированным скриптам продолжать использовать /etc/init.d/rsyslog start|stop

Отредактируйте файл /etc/init.d/rsyslog, закомментируйте/удалите все вхождения следующего блока кода –

if init_is_upstart; then
    exit 1 (или exit 0)
fi

Теперь

/etc/init.d/rsyslog start|stop

должно работать.

Для получения дополнительной информации см. это.

Ответ или решение

Решение проблемы с запуском rsyslog через /etc/init.d/

Ваша проблема с запуском службы rsyslog с помощью команды /etc/init.d/rsyslog {start | stop | restart} может возникать из-за изменений в системе инициализации, которые произошли в новых версиях Ubuntu. Современные версии системы используют Upstart или Systemd, что может привести к сбоям при попытке обращения к традиционным скриптам в каталоге /etc/init.d/. Тем не менее, вы можете использовать несколько подходов для обхода этой проблемы и обеспечения совместимости с вашими автогенерируемыми скриптами.

1. Вариант с редактированием скрипта rsyslog

Вы можете отредактировать сам скрипт /etc/init.d/rsyslog, добавив возможность работы с ним по старой схеме. Для этого выполните следующие шаги:

  1. Открытие скрипта для редактирования:

    sudo nano /etc/init.d/rsyslog
  2. Комментарий или удаление проверки на Upstart:
    Найдите следующий блок кода и закомментируйте его:

    if init_is_upstart; then
       exit 1
    fi

    После редактирования, этот код может выглядеть так:

    # if init_is_upstart; then
    #     exit 1
    # fi
  3. Сохраните изменения и выйдите из редактора.

После выполнения этих шагов команда /etc/init.d/rsyslog start|stop|restart должна заработать.

2. Использование команды service

Другим простым вариантом является изменение ваших автогенерируемых скриптов, чтобы вместо /etc/init.d/rsyslog использовалась команда service. Это более современный подход и позволит избежать потенциальных проблем с совместимостью. Вот как можно обновить ваши скрипты:

  • Вместо:

    /etc/init.d/rsyslog stop > /dev/null

    Используйте:

    service rsyslog stop
  • И аналогично для старта:

    service rsyslog start

3. Рекомендации по сборке пакета

Если вы внесли изменения в код в файле ../defense4all/dfapp.aggregate/src/install/config_rsyslog.bash, не забудьте заново собрать ваш проект для создания .deb или .rpm файлов. Это поможет применить ваши исправления.

Заключение

Эти решения подходят для обхода проблемы с запуском службы rsyslog через традиционные скрипты и обеспечения работы ваших автогенерируемых решений. Редактирование скрипта или использование команды service — это два самых простых и эффективных способа. Надеюсь, это поможет вам решить возникшую проблему и позволит вашему проекту функционировать без сбоев.

Оцените материал
Добавить комментарий

Капча загружается...