Вопрос или проблема
Я прочитал ответ/комментарии в теме
Разница между /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
, добавив возможность работы с ним по старой схеме. Для этого выполните следующие шаги:
-
Открытие скрипта для редактирования:
sudo nano /etc/init.d/rsyslog
-
Комментарий или удаление проверки на Upstart:
Найдите следующий блок кода и закомментируйте его:if init_is_upstart; then exit 1 fi
После редактирования, этот код может выглядеть так:
# if init_is_upstart; then # exit 1 # fi
-
Сохраните изменения и выйдите из редактора.
После выполнения этих шагов команда /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
— это два самых простых и эффективных способа. Надеюсь, это поможет вам решить возникшую проблему и позволит вашему проекту функционировать без сбоев.