Когда мне нужно перезапустить 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 этот скрипт отсутствует, однако это может не иметь значения для вашей среды.