systemd-run --scope: как запустить команду под контролем cgroup… — Admin Guides | Сисадмин — TG.ME

systemd-run --scope: как запустить команду под контролем cgroup

Обычный запуск команды из shell никак не даёт ей отдельного systemd unit

./backup.sh


Процесс просто становится частью cgroup текущего shell
systemd-run --scope создаёт для уже запускаемой команды отдельный scope и помещает её под контроль systemd

systemd-run --scope ./backup.sh


Теперь у процесса появляется собственная cgroup, которую можно увидеть:

systemctl status run-*.scope


Временно ограничиваем ресурсы

Например, не даём задаче использовать больше двух CPU:

systemd-run --scope -p CPUQuota=200% ./backup.sh


Или ограничиваем память:

systemd-run --scope -p MemoryMax=2G ./backup.sh


Это удобно для тяжёлых задач, которые не хочется превращать в постоянный unit

Проверяем, что ограничение реально применилось

systemd-cgls


Или для конкретного scope:

systemctl show run-*.scope \
-p ControlGroup \
-p MemoryCurrent \
-p MemoryMax


Можно увидеть отдельную cgroup и текущее потребление ресурсов

--scope и обычный systemd-run - не одно и то же

systemd-run ./backup.sh


создаёт transient service, которым systemd управляет как сервисом
А:

systemd-run --scope ./backup.sh


создаёт scope для процесса, который запускается непосредственно от текущего окружения

Это важно для интерактивных задач, отладки и временных ограничений

⚡️systemd-run --scope позволяет быстро изолировать одну тяжёлую команду по CPU, памяти или другим cgroup-ресурсам без создания unit-файла и изменения конфигурации сервера
👍12❤2
August 25, 2026 1.5K 43