Я не думаю, что этого можно достичь напрямую только на одном узле без балансировщика нагрузки, правил брандмауэра или повторного -маршрутизации трафика. Это, безусловно, выходит за рамки systemd.
Причина в том, что служба будет занимать прослушиваемый порт. Для достижения нулевого времени простоя никогда не должно быть случаев, когда клиенты перенаправляются на несуществующий -порт или на порт с отключенной службой -. Но вы не можете одновременно запускать Process A
и Process B
на одном и том же порту и IP-адресе.
Чтобы добиться нулевого времени простоя, вы должны запустить новый процесс на порту, отличном от старого, а затем использовать что-то вроде правил брандмауэра или балансировщика нагрузки для перенаправления трафика со старого порта на новый порт. Затем вы должны дождаться отключения старых клиентов. Затем (и только потом )вы можете закрыть старую службу.
«Обычный» способ добиться этого — использовать два узла (два сервера )за балансировщиком нагрузки -.В этом сценарии вы можете перезапустить узел, временно повторно -настроив балансировщик нагрузки -так, чтобы он указывал на другой узел, и заново -настроив его снова после завершения перезапуска.
Это выходит за рамки возможностей systemd. Если вы хотите автоматизировать процесс, используя брандмауэры и автоматическую перенастройку -службы для использования другого порта, вы можете создать сложный набор сценариев для достижения этой цели и подключить его как настроенную reload
опцию.
В некоторых файловых системах, , таких как ZFS и Btrfs , результат du
без --apparent-size
действительно меняется со временем .
Нет гарантии, что файловая система не будет задерживать, -переупорядочивать, сжимать, дедуплицировать или иным образом изменять физическое хранилище с течением времени.
Таким образом, простой du
может дать разные результаты в любую секунду.
Подробный пример :Запуск strace -v
для вызова du
показывает данные, возвращенные системным вызовом типа stat
-; первый:
newfstatat(AT_FDCWD, "test.webp", {... st_blksize=131072, st_blocks=1, st_size=464124,...
и вскоре после:
newfstatat(AT_FDCWD, "test.webp", {... st_blksize=131072, st_blocks=1029, st_size=464124,...