Я бы использовал service
команду, потому что она более согласована в разных дистрибутивах. Итак, из упомянутых вами команд я бы выбрал вариант:
service networking restart
И я определенно запустил бы его в screen
сеансе или другими способами гарантировал, что он не будет завершен в случае, если вы потеряли соединение с оболочкой, в которой вы его набрали. (Я попытался потерять соединение с машиной, войдя в систему ssh
и затем перезапустив сеть только для того, чтобы соединение ssh было разорвано, пока сеть не работала, и отправил HUP так service
, чтобы он больше не вызывал сеть.)
В прошлом были системы, в которых service
была простая оболочка вокруг сценариев, /etc/init.d
и первые две ваши команды делали одно и то же. Но в настоящее время существуют системы, в которых service
иногда можно делать что-то другое, и в целом service
лучше знают, что делать с вашим конкретным дистрибутивом. И invoke-rc.d
также зависит от распределения.
Несмотря service
на то, что он наиболее похож во всех дистрибутивах, имена сервисов могут отличаться. Например, есть дистрибутивы, где названа служба, network
и другие, где она названа networking
. И в некоторых конфигурациях может быть более подходящим network-manager
, чем перезагрузить networking
.