Назад | Перейти на главную страницу

Следует ли для перезапуска службы (например, httpd) использовать /etc/init.d httpd restart или / sbin / service httpd restart?

Когда мне нужно перезапустить Apache на моем RHEL VPS, я набираю sudo /sbin/service httpd restart. Однако я заметил, что во многих статьях предлагается использовать sudo /etc/init.d httpd restart.

Есть ли разница? Если есть, когда я должен использовать каждый?

На странице руководства:

service запускает сценарий инициализации System V в максимально предсказуемой среде, удаляя большинство переменных среды и с текущим рабочим каталогом, установленным в /.

Затем он вызывает init.d сценарий. Таким образом, они оба выполняют одно и то же, за исключением вызова сценария через /sbin/service просто гарантирует, что некоторые переменные среды в вашей оболочке не испортят init.d сценарий.

С помощью /sbin/service хорошо, потому что он дает демону новую среду для работы, без каких-либо потенциально раздражающих переменных среды, которые мешают и вызывают хаос. По крайней мере, это основание для того, чтобы требовать этого на работе; Я всегда использовал сценарии инициализации непосредственно на моих машинах с другим дистрибутивом, и это не вызывало видимых проблем, но я уверен, что существовала настоящая проблема, которая /sbin/service работает. Возможно, у систем RHEL просто больше мусора, лежащего в среде по умолчанию.

Я бы посоветовал использовать все, что вы хотите, когда вы действительно входите в систему, и использовать /etc/(init.d|rc.d)/daemon-name если вы пишете сценарии, то последний, как правило, более переносим. IIRC, единственные дистрибутивы, которые поставляются с /sbin/service в базовых пакетах устанавливаются RH-ароматизаторы, то есть RHEL, CentOS, Fedora. Например, в моих системах Debian этот скрипт отсутствует, однако это может не иметь значения для вашей среды.