Service или Systemctl?
Каждый стартует или стопает процессы, как привык. Во времена динозавров, когда ещё не существовало systemd, всё сводилось к командам:
service apache restart
Сейчас мир изменился, появился systemd, но привычки остались прежними.
Теперь сервисами рекомендуется управлять через systemctl.
Но какая в хуй разница, как управлять сервисами?
И service, и systemctl выполняют, по сути, одно и то же, и ты по итогу получаешь ожидаемый результат.
На самом деле сейчас команда service — это обёртка вокруг systemctl.
Давай убедимся:
strace -f service nginx restart 2>&1 | grep execve
По итогу ты получишь:
execve("/usr/bin/systemctl", ["systemctl", "restart", "nginx.service"])
То есть service обратился к systemctl и произвёл перезапуск nginx.
А если глянуть исходник service:
cat /usr/sbin/service
То ты увидишь обычный Bash-скрипт, в котором и происходит вся эта магия.
Если система использует SysVinit или Upstart (например, старые версии Debian, CentOS 6, Ubuntu 14.04), то service будет работать напрямую со скриптами /etc/init.d/.
По бест-практикам старайся использовать systemctl. Но опять же service никто не запретит тебе использовать.
Хотя, когда молодые ребята видят, как ты вводишь service, у них разрывает жопу, и ты автоматически причисляешь себя к престарелым скуфам.
Кроме systemctl и service, есть такие штуки для управления процессами:
/etc/init.d/nginx restart
rc-service nginx restart
sv restart nginx
s6-rc -d change nginx
supervisorctl restart nginx
А чтобы проверить, какая система инициализации у тебя, вот тебе пиздатая команда:
ps -p 1 -o comm=
Вот и вся наука.
А как ты рулишь сервисами? Как скуф или как современный молодой человек?








Комментарии