Главная > Управление пакетами и системой > systemd-run

systemd-run: Запуск программ во временных юнитах systemd

Команда systemd-run запускает указанную программу во временном юнита типа scope или service. Это позволяет управлять ресурсами программы, средой выполнения, логированием и другими аспектами под контролем systemd, позволяя ей работать независимо от текущей оболочки. Это особенно полезно для фоновых задач, задач, требующих ограничения ресурсов, или когда необходимы специфические функции systemd.

Обзор

systemd-run запускает команду под управлением systemd, заставляя ее работать как отдельный юнит systemd. Это позволяет использовать мощные функции systemd для управления группами процессов, ограничения ресурсов и интеграции логирования.

Основные возможности

  • Создание временных юнитов типа scope или service
  • Ограничение ресурсов программы и установка приоритетов
  • Фоновый запуск после завершения сеанса оболочки (для юнитов типа service)
  • Интегрированное логирование через журнал systemd
  • Запуск команд внутри контейнеров и виртуальных машин

Основные опции

systemd-run предоставляет различные опции для управления средой выполнения программы и свойствами юнита systemd.

Тип и имя юнита

Управление запуском и среда

Сгенерированная команда:

Комбинируйте команды.

Описание:

`systemd-run` Запускает команду.

Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.

Примеры использования

Различные примеры использования команды systemd-run.

Запуск команды в юните типа scope по умолчанию

systemd-run --scope echo "Hello from systemd-run"

Запускает простую команду в юните типа scope. Эта команда будет выполняться до завершения работы systemd-run.

Запуск команды в фоновом юните типа service

systemd-run --service --unit=my-long-task.service sleep 300

Создает фоновый сервис, который продолжает работать после завершения сеанса оболочки. Имя сервиса указывается с помощью --unit.

Установка приоритета ЦП и ограничения памяти

systemd-run --nice=10 --property=MemoryLimit=500M stress --cpu 4

Устанавливает низкий приоритет ЦП (nice=10) и ограничивает использование памяти до 500 МБ для запускаемой программы.

Запуск команды в определенном рабочем каталоге

systemd-run --working-directory=/tmp bash -c 'pwd; touch testfile.txt'

Настраивает выполнение команды в каталоге /tmp.

Запуск конвейерной команды через оболочку

systemd-run --shell echo "Hello" | cat

Для использования функций оболочки, таких как конвейеры (|) или перенаправления (>), необходимо использовать опцию --shell.

Запуск команды в пользовательском юните

systemd-run --user --scope echo "User-specific task"

Создает и запускает юнит в экземпляре systemd текущего пользователя. Это не влияет на всю систему.

Советы и замечания

Полезные советы и замечания при использовании systemd-run.

Юниты типа scope против service

Юнит типа scope (--scope) действителен только во время выполнения команды systemd-run и зависит от родительского процесса. Юнит типа service (--service) выполняется независимо в фоновом режиме даже после завершения работы команды systemd-run. Для фоновых задач обычно используется --service.

  • `--scope`: Зависит от родительского процесса, завершается вместе с `systemd-run`
  • `--service`: Независимый фоновый запуск, сохраняется после завершения `systemd-run`

Проверка и управление состоянием юнитов

Состояние юнитов, созданных с помощью systemd-run, можно проверить с помощью команды `systemctl`. Юниты типа service можно остановить с помощью `systemctl stop` и т.д.

  • Проверка состояния: `systemctl status <unit_name>`
  • Остановка сервиса: `systemctl stop <unit_name>`
  • Просмотр логов: `journalctl -u <unit_name>`

Использование ограничений ресурсов

С помощью опции `--property` можно ограничивать различные ресурсы, такие как ЦП, память, ввод-вывод и т.д. Это очень эффективно для повышения стабильности системы и предотвращения чрезмерного использования ресурсов определенными процессами.

`--shell` для использования функций оболочки

Если команда включает специальные функции оболочки, такие как конвейеры (|), перенаправления (>) или фоновый запуск (&), необходимо использовать опцию `--shell`, чтобы команда интерпретировалась оболочкой. В противном случае команда может быть выполнена некорректно.



Те же команды в категории