Для серьезной серверной среды, ища опцию без стоимости, CentOS является определенно способом пойти.
Это тарифицировано как "бесплатная" версия RHEL (Red Hat Enterprise Linux) и является в значительной степени той же операционной системой с другим брендингом.
Если существуют обновления ядра, glibc или systemd, можно хотеть перезапустить так обновленные версии, используются. Если у Вас есть, скажем, обновления Вашей настольной среды, простой выход из системы/вход в систему достаточно.
Единственная обязательная причина для перезагрузки - новое ядро (и вы можете выполнить мягкую перезагрузку с помощью kexec). См. https://wiki.archlinux.org/index.php/Kexec для подробностей, вкратце:
загрузите новое ядро, initramfs и укажите командную строку загрузки
kexec -l / boot / new-kernel --initrd = / boot / new-initramfs --reuse-cmdline
вызвать kexec
(используйте systemctl
для правильного завершения работы, ] kexec -e
будет выполняться напрямую)
systemctl kexec
Обратите внимание, что если вы создаете kexec-load @ .service
, как описано в вики, если вы После перезагрузки systemd
автоматически выполнит мягкую перезагрузку с использованием kexec
вместо перезагрузки BIOS
Немного улучшенная версия, которая дает имена служб systemd:
PIDS="(lsof +c0 -n 2> /dev/null | grep 'DEL.*lib' | awk '{print $2}' | sort -u)"
for PID in $PIDS; do
systemctl status $i
done | grep '●' | awk '{print $2}' | sort -u
или однострочное:
for i in $(lsof +c0 -n 2> /dev/null | grep 'DEL.*lib' | awk '{print $2}' | sort -u); do systemctl status $i; done | grep '●' | awk '{print $2}' | sort -u
Обратите внимание, что есть некоторые проблемы:
systemctl daemon-reload
должен выполняться до перезапуска чего-либо еще сам systemd
) должен быть перезапущен, он может выполняется с помощью systemctl daemon-reexec
systemctl restart dbus.service
нарушает работу некоторых других служб, их необходимо перезапустить после перезапуска dbus:
systemd
сама: systemctl daemon-reexec
systemd-logind
systemd-machined
dbus
systemctl restart sshd
не перезапускает его, пока вы подключены, я вижу 2 варианта:
systemctl restart sshd
с использованием в / cron / systemd
таймеры SSH
с использованием другой удаленной (защищенной) оболочки, такой как mosh
screen / tmux
, также могут блокировать такие службы, как SSH
от перезапуска, самый простой способ - закрыть эти сеансы перед перезапуском служб