Разница между systemctl init.d и службой

Я новичок в Linux и тестирую себя с использованием экземпляра Amazon Lightsail (Ubuntu 16.04 LTS).

Пройдя через множество руководств, с которыми я столкнулся, я вижу, что люди используют разные команды для запуска / stop / restart / reload / status-check service. В частности, они:

sudo systemctl status apache2.service sudo /bin/systemctl status apache2.service sudo /etc/init.d/apache2 status sudo service apache2 status

Все вышеприведенные команды работают.

Должен ли я использовать одну команду над другой? Если да, то почему? Есть ли другие команды, о которых я должен знать?

Использование init.d в Monit вызвало проблемы, когда я хотел использовать параметр статуса (статус будет заключаться в том, что служба отключена, когда она была фактически в сети - перезапущена Monit). Измените код в Monit от inid.d до / bin / systemctl.

Кажется, что с помощью init.d содержится дополнительная информация о том, что произошло с другими. Если я должен использовать одну из других команд, возможно ли, чтобы они отображали больше информации о том, что было сделано?

ubuntu@ip-172-26-12-245:~$ sudo systemctl restart pure-ftpd.service ubuntu@ip-172-26-12-245:~$ sudo /bin/systemctl restart pure-ftpd.service ubuntu@ip-172-26-12-245:~$ sudo /etc/init.d/pure-ftpd restart [ ok ] Restarting pure-ftpd (via systemctl): pure-ftpd.service. ubuntu@ip-172-26-12-245:~$ sudo service pure-ftpd restart ubuntu@ip-172-26-12-245:~$

Я хотел бы поблагодарить всех заранее, кто потратил время на чтение и ответьте на этот вопрос.

21
задан 3 May 2017 в 20:08

4 ответа

Для начала существует целая история и борьба между переходом от SysVInit до SystemD. Вместо того, чтобы пытаться сломать все это в одном ответе, я расскажу вам о некоторых google venturing для получения более подробной информации об истории, а также одной конкретной статьи по теме:

http: // www .tecmint.com / systemd-replaceaces-init-in-linux /

Таким образом, это был медленный и трудный переход. Некоторые унаследованные функции были сохранены неповрежденными (например, init.d до некоторой степени). Если у вас есть возможность использовать systemctl для вашего сервисного контроля, я рекомендую использовать его. Это ожидаемое будущее для Linux, и в конечном итоге старые методы SysVInit будут считаться полностью устаревшими и удалены.

Чтобы охватить каждый из них, который вы конкретно указали:

sudo systemctl status apache2.service

Это новый подход SystemD к обработке сервисов. Двигаясь вперед, приложения в Linux предназначены для использования метода systemd, а не для других.

sudo systemctl status apache2.service

Это то же самое, что и предыдущее команда. Единственное отличие в этом случае заключается в том, что он не зависит от переменной среды оболочки $PATH, чтобы найти команду, она явно перечисляет эту команду, введя путь к команде.

sudo /etc/init.d/apache2 status [!d11 ]

Это оригинальный SysVInit метод вызова службы. Ининные скрипты будут записаны для службы и помещены в этот каталог. Хотя этот метод все еще используется многими, service была командой, которая заменила этот метод вызова служб в SysVInit. Есть несколько унаследованных функций для новых систем с SystemD, но большинство новых программ не включают в себя это, и не все старые сценарии запуска приложений работают с ним.

sudo /etc/init.d/apache2 status

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

Наконец, вы упомянули о желании узнать, как получить больше информации из команд, поскольку некоторые предоставляют больше информации, чем другие. Это почти всегда определяется приложением и как они проектировали их файл инициализации или службы. Однако, как правило, если оно завершено беззвучно, это было успешным. Однако для проверки параметров start, stop или restart вы можете использовать подкоманду status, чтобы увидеть, как она работает. Вы упоминали о некорректной команде status в старом сценарии инициализации. Это ошибка, которую разработчики приложений должны будут рассмотреть. Однако, поскольку скрипты init становятся устаревшим методом обработки сервисов, они могут просто игнорировать ошибку до тех пор, пока они полностью не удалит сценарий инициализации. [F23] должен всегда работать правильно, иначе ошибка должна регистрироваться с разработчиками приложений.

26
ответ дан 22 May 2018 в 22:58
  • 1
    Большое вам спасибо за подробный ответ. Я также Гуглинг для ответов, но этот меня действительно смутил, поэтому я разместил его здесь. Я также вижу, что sudo systemctl status apache2 работает, а не (sudo systemctl status apache2.service). Есть ли вред в отношении части обслуживания? – Waqas Tariq 3 May 2017 в 22:12
  • 2
    @WaqasTariq не проблема! Оба из них должны работать, systemctl будет искать каталоги, в которых хранятся служебные файлы, и добавить «.service». для вас, если он найдет его. Например, если вы нажмете вкладку сразу после записи sudo systemctl status apache2, она должна заполнить ее, добавив для вас .service. Если есть несколько файлов systemactl apache2 (например, .service и .target, вам нужно дважды нажать вкладку, чтобы отобразить все доступные параметры. – TopHat 3 May 2017 в 22:14
  • 3
    Понял. Спасибо за ваши ответы и ваше время. – Waqas Tariq 3 May 2017 в 22:16
  • 4
    @WaqasTariq приветствую вас! – TopHat 3 May 2017 в 22:18

Для начала существует целая история и борьба между переходом от SysVInit до SystemD. Вместо того, чтобы пытаться сломать все это в одном ответе, я расскажу вам о некоторых google venturing для получения более подробной информации об истории, а также одной конкретной статьи по теме:

http: // www .tecmint.com / systemd-replaceaces-init-in-linux /

Таким образом, это был медленный и трудный переход. Некоторые унаследованные функции были сохранены неповрежденными (например, init.d до некоторой степени). Если у вас есть возможность использовать systemctl для вашего сервисного контроля, я рекомендую использовать его. Это ожидаемое будущее для Linux, и в конечном итоге старые методы SysVInit будут считаться полностью устаревшими и удалены.

Чтобы охватить каждый из них, который вы конкретно указали:

sudo systemctl status apache2.service

Это новый подход SystemD к обработке сервисов. Двигаясь вперед, приложения в Linux предназначены для использования метода systemd, а не для других.

sudo systemctl status apache2.service

Это то же самое, что и предыдущее команда. Единственное отличие в этом случае заключается в том, что он не зависит от переменной среды оболочки $PATH, чтобы найти команду, она явно перечисляет эту команду, введя путь к команде.

sudo /etc/init.d/apache2 status

Это оригинальный SysVInit метод вызова службы. Ининные скрипты будут записаны для службы и помещены в этот каталог. Хотя этот метод все еще используется многими, service была командой, которая заменила этот метод вызова служб в SysVInit. Есть несколько унаследованных функций для новых систем с SystemD, но большинство новых программ не включают в себя это, и не все старые сценарии запуска приложений работают с ним.

sudo /etc/init.d/apache2 status

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

Наконец, вы упомянули о желании узнать, как получить больше информации из команд, поскольку некоторые предоставляют больше информации, чем другие. Это почти всегда определяется приложением и как они проектировали их файл инициализации или службы. Однако, как правило, если оно завершено беззвучно, это было успешным. Однако для проверки параметров start, stop или restart вы можете использовать подкоманду status, чтобы увидеть, как она работает. Вы упоминали о некорректной команде status в старом сценарии инициализации. Это ошибка, которую разработчики приложений должны будут рассмотреть. Однако, поскольку скрипты init становятся устаревшим методом обработки сервисов, они могут просто игнорировать ошибку до тех пор, пока они полностью не удалит сценарий инициализации. [F23] должен всегда работать правильно, иначе ошибка должна регистрироваться с разработчиками приложений.

29
ответ дан 18 July 2018 в 13:52

Для начала существует целая история и борьба между переходом от SysVInit до SystemD. Вместо того, чтобы пытаться сломать все это в одном ответе, я расскажу вам о некоторых google venturing для получения более подробной информации об истории, а также одной конкретной статьи по теме:

http: // www .tecmint.com / systemd-replaceaces-init-in-linux /

Таким образом, это был медленный и трудный переход. Некоторые унаследованные функции были сохранены неповрежденными (например, init.d до некоторой степени). Если у вас есть возможность использовать systemctl для вашего сервисного контроля, я рекомендую использовать его. Это ожидаемое будущее для Linux, и в конечном итоге старые методы SysVInit будут считаться полностью устаревшими и удалены.

Чтобы охватить каждый из них, который вы конкретно указали:

sudo systemctl status apache2.service

Это новый подход SystemD к обработке сервисов. Двигаясь вперед, приложения в Linux предназначены для использования метода systemd, а не для других.

sudo systemctl status apache2.service

Это то же самое, что и предыдущее команда. Единственное отличие в этом случае заключается в том, что он не зависит от переменной среды оболочки $PATH, чтобы найти команду, она явно перечисляет эту команду, введя путь к команде.

sudo /etc/init.d/apache2 status

Это оригинальный SysVInit метод вызова службы. Ининные скрипты будут записаны для службы и помещены в этот каталог. Хотя этот метод все еще используется многими, service была командой, которая заменила этот метод вызова служб в SysVInit. Есть несколько унаследованных функций для новых систем с SystemD, но большинство новых программ не включают в себя это, и не все старые сценарии запуска приложений работают с ним.

sudo /etc/init.d/apache2 status

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

Наконец, вы упомянули о желании узнать, как получить больше информации из команд, поскольку некоторые предоставляют больше информации, чем другие. Это почти всегда определяется приложением и как они проектировали их файл инициализации или службы. Однако, как правило, если оно завершено беззвучно, это было успешным. Однако для проверки параметров start, stop или restart вы можете использовать подкоманду status, чтобы увидеть, как она работает. Вы упоминали о некорректной команде status в старом сценарии инициализации. Это ошибка, которую разработчики приложений должны будут рассмотреть. Однако, поскольку скрипты init становятся устаревшим методом обработки сервисов, они могут просто игнорировать ошибку до тех пор, пока они полностью не удалит сценарий инициализации. [F23] должен всегда работать правильно, иначе ошибка должна регистрироваться с разработчиками приложений.

29
ответ дан 24 July 2018 в 20:16

Для начала существует целая история и борьба между переходом от SysVInit до SystemD. Вместо того, чтобы пытаться сломать все это в одном ответе, я расскажу вам о некоторых google venturing для получения более подробной информации об истории, а также одной конкретной статьи по теме:

http: // www .tecmint.com / systemd-replaceaces-init-in-linux /

Таким образом, это был медленный и трудный переход. Некоторые унаследованные функции были сохранены неповрежденными (например, init.d до некоторой степени). Если у вас есть возможность использовать systemctl для вашего сервисного контроля, я рекомендую использовать его. Это ожидаемое будущее для Linux, и в конечном итоге старые методы SysVInit будут считаться полностью устаревшими и удалены.

Чтобы охватить каждый из них, который вы конкретно указали:

sudo systemctl status apache2.service

Это новый подход SystemD к обработке сервисов. Двигаясь вперед, приложения в Linux предназначены для использования метода systemd, а не для других.

sudo systemctl status apache2.service

Это то же самое, что и предыдущее команда. Единственное отличие в этом случае заключается в том, что он не зависит от переменной среды оболочки $PATH, чтобы найти команду, она явно перечисляет эту команду, введя путь к команде.

sudo /etc/init.d/apache2 status

Это оригинальный SysVInit метод вызова службы. Ининные скрипты будут записаны для службы и помещены в этот каталог. Хотя этот метод все еще используется многими, service была командой, которая заменила этот метод вызова служб в SysVInit. Есть несколько унаследованных функций для новых систем с SystemD, но большинство новых программ не включают в себя это, и не все старые сценарии запуска приложений работают с ним.

sudo /etc/init.d/apache2 status

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

Наконец, вы упомянули о желании узнать, как получить больше информации из команд, поскольку некоторые предоставляют больше информации, чем другие. Это почти всегда определяется приложением и как они проектировали их файл инициализации или службы. Однако, как правило, если оно завершено беззвучно, это было успешным. Однако для проверки параметров start, stop или restart вы можете использовать подкоманду status, чтобы увидеть, как она работает. Вы упоминали о некорректной команде status в старом сценарии инициализации. Это ошибка, которую разработчики приложений должны будут рассмотреть. Однако, поскольку скрипты init становятся устаревшим методом обработки сервисов, они могут просто игнорировать ошибку до тех пор, пока они полностью не удалит сценарий инициализации. [F23] должен всегда работать правильно, иначе ошибка должна регистрироваться с разработчиками приложений.

29
ответ дан 31 July 2018 в 11:41

Другие вопросы по тегам:

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