В чем разница между запуском nginx с помощью команд "nginx", "запуск службы nginx" и "запуск systemctl nginx"? - PullRequest
0 голосов
/ 03 января 2019

Я заметил, что когда я запускаю nginx командой ubuntu "nginx", я делаю статус systemctl nginx. Это показывает, что systemctl отключен. Более того, если я сначала запускаю nginx с помощью команды systemctl start nginx и пытаюсь запустить nginx с помощью команды nginx, он проверяет доступность портов, а затем говорит, что nginx: [emerg] все еще не может bind (). Поэтому я подумал, что должно быть другое и их назначение. Когда я запускаю nginx с помощью команды nginx, единственный способ остановить nginx - это принудительно использовать killlall nginx или kill -9 (идентификатор процесса) или очистить порт. Поэтому я почти уверен, что в них есть какая-то разница.

Ответы [ 2 ]

0 голосов
/ 03 января 2019
Команда

service - это простой скрипт, который в основном абстрагирует выбор базовой системы инициализации (upstart, systemmd, /etc/init.d или systemctl ).

, поскольку он является очень лаконичным сценарием, он поддерживает только очень ограниченный набор операций (start | stop | reload ..).

Однако, если вы действительно хотите выполнить дополнительную операциюв этом случае вам необходимо использовать реальную систему инициализации systemctl

apt-пример: запуск службы во время загрузки с использованием systemctl sudo systemctl enable the-name-of-service, что невозможно при использовании service

0 голосов
/ 03 января 2019

Разница между приведенными вами примерами заключается в том, как запускаются процессы.

Выполнение команды nginx запустит приложение и будет ждать ваших действий пользователя, чтобы остановить его.

Команды systemctl или service - это почти одно и то же, и при запуске service nginx start или systemctl start nginx в фоновом режиме запускается служба, запускающая демон Nginx.

Вы также можете использовать это для выполнения service nginx restart или systemctl restart nginx для перезапуска службы или даже service nginx reload / systemctl reload nginx для перезагрузки конфигурации без полной остановки сервера Nginx.

Причина, по которой вы не можете выполнить и nginx, и systemctl start nginx, заключается в том, что конфигурация nginx уже прослушивает порт 80, и вы не можете одновременно прослушивать один и тот же порт на одном IP-адресе.

Вы также можете принудительно запустить службу nginx при загрузке, запустив systemctl enable nginx, поэтому ваш systemctl status nginx вернет 'отключен'.

Надеюсь, это имеет смысл.

...