accueil > Gestion des paquets et du système > systemd-run

systemd-run : Exécuter un programme avec une unité systemd temporaire

La commande systemd-run exécute un programme spécifié en tant qu'unité de portée (scope) ou de service (service) temporaire. Cela permet de placer la gestion des ressources, l'environnement d'exécution et la journalisation du programme sous le contrôle de systemd, et de l'exécuter indépendamment de l'environnement shell existant. C'est particulièrement utile pour les tâches en arrière-plan, les tâches nécessitant des limitations de ressources, ou celles qui nécessitent des fonctionnalités spécifiques de systemd.

Aperçu

systemd-run exécute une commande sous le contrôle de systemd, faisant fonctionner cette commande comme une unité systemd indépendante. Cela permet d'exploiter les fonctionnalités puissantes de systemd telles que la gestion des groupes de processus, la limitation des ressources et l'intégration de la journalisation.

Caractéristiques principales

  • Création d'unités de portée ou de service temporaires
  • Limitation des ressources et définition de la priorité du programme
  • Exécution en arrière-plan même après la fermeture de la session shell (unité de service)
  • Journalisation intégrée via le journal systemd
  • Exécution de commandes dans des conteneurs et des machines virtuelles

Options principales

systemd-run offre diverses options pour contrôler l'environnement du programme à exécuter et les attributs de l'unité systemd.

Type et nom de l'unité

Contrôle de l'exécution et environnement

Commande générée :

Essayez de combiner les commandes.

Description:

`systemd-run` Exécute la commande.

Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.

Exemples d'utilisation

Divers exemples d'utilisation de la commande systemd-run.

Exécuter une commande avec une unité de portée de base

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

Exécute une commande simple en tant qu'unité de portée temporaire. Cette commande s'exécute jusqu'à ce que systemd-run se termine.

Exécuter une commande avec une unité de service en arrière-plan

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

Crée un service en arrière-plan qui continue de s'exécuter même après la fermeture de la session shell. Le nom du service est spécifié avec --unit.

Définir la priorité du CPU et la limite de mémoire

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

Définit la priorité du CPU du programme à exécuter à un niveau inférieur (nice=10) et limite l'utilisation de la mémoire à 500 Mo.

Exécuter une commande dans un répertoire de travail spécifique

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

Configure la commande pour qu'elle s'exécute dans le répertoire /tmp.

Exécuter une commande en pipeline via un shell

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

Pour utiliser des fonctionnalités du shell telles que les pipelines (|) ou les redirections (>), vous devez utiliser l'option --shell.

Exécuter une commande avec une unité utilisateur

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

Crée et exécute l'unité dans l'instance systemd de l'utilisateur actuel. Cela n'affecte pas l'ensemble du système.

Conseils et précautions

Conseils utiles et points à considérer lors de l'utilisation de systemd-run.

Unité de portée vs Unité de service

Une unité de portée (--scope) n'est valide que pendant l'exécution de la commande systemd-run et dépend du processus parent. Une unité de service (--service) s'exécute indépendamment en arrière-plan même après la fin de la commande systemd-run. L'utilisation de --service est courante pour les tâches en arrière-plan.

  • `--scope` : Dépend du processus parent, se termine avec systemd-run
  • `--service` : Exécution indépendante en arrière-plan, persiste après la fin de systemd-run

Vérification et gestion de l'état de l'unité

L'état des unités créées avec systemd-run peut être vérifié à l'aide de la commande systemctl. Les unités de service peuvent être arrêtées avec systemctl stop, etc.

  • Vérifier l'état : `systemctl status <unit_name>`
  • Arrêter le service : `systemctl stop <unit_name>`
  • Vérifier les journaux : `journalctl -u <unit_name>`

Utilisation de la limitation des ressources

Vous pouvez limiter diverses ressources telles que le CPU, la mémoire et les E/S en utilisant l'option --property. Ceci est très efficace pour améliorer la stabilité du système et empêcher certains processus d'utiliser des ressources excessives.

--shell pour utiliser les fonctionnalités du shell

Si votre commande inclut des fonctionnalités spéciales du shell telles que des pipelines (|), des redirections (>) ou une exécution en arrière-plan (&), vous devez impérativement utiliser l'option --shell pour que la commande soit interprétée par le shell. Sinon, la commande pourrait ne pas s'exécuter correctement.



Commandes de la même catégorie