Каждый стартует или стопает процессы как привык. Во времена динозавров когда еще не существовало
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=
Вот и вся наука.
А как ты рулишь сервисами? Как скуф или как современный молодой человек?
tags: #linux #debug #strace
—
🔔 @bashdays➡️ @gitgate