Может быть, это тривиальный вопрос, но он мне не совсем понятен. На одном из наших серверов у нас запущены некоторые фоновые процессы, которые были запущены, service
а некоторые запущены systemctl
, например:
$ service nginx start
$ systemctl start gunicorn
В чем разница между двумя командами? Какой из них является предпочтительным способом справиться с фоновыми услугами? Как настроить предпочитаемую команду?
Ответы:
service
это команда «высокого уровня», используемая для запуска и остановки служб в различных Unix и Linux. В зависимости от «низкоуровневого» менеджера сервисов,service
перенаправляет на разные двоичные файлы.Например, в CentOS 7 он перенаправляет
systemctl
, а в CentOS 6 напрямую вызывает соответствующий/etc/init.d
скрипт. С другой стороны, в старых версиях Ubuntu он перенаправляет наupstart
service
достаточно для базового управления услугами, в то время как прямые звонкиsystemctl
дают больше возможностей для контроля.источник
systemctl
в основном более мощная версияservice
.С
service
вы можете сделать только команды , связанные с обслуживанием (то естьstatus
,reload
,restart
) , тогда как сsystemctl
вы можете использовать более сложные команды , такие как:systemctl is-failed name.service # check if service failed to load
Или маскирующие услуги:
systemctl mask name.service
На этой странице много полезной информации от Ask Ubuntu.
источник
systemctl
является основной утилитой для управления демонами / служб вsystemd
, вто время как
service
команда традиционная утилита вSysVinit
мире.Одной из функций systemd является совместимость с SysVinit / унаследованными командами,
поэтому, если у вас есть эта
systemctl
команда,service foo start
она станет оберткойsystemctl start foo
.Та же история для
chkconfig
.источник