accueil > Gestion des processus > nohup

nohup : Continuer à s'exécuter après la déconnexion

Un outil qui permet aux commandes de continuer à s'exécuter même si le terminal est fermé ou si la connexion SSH est interrompue. Indispensable pour exécuter des tâches de longue durée (démarrage de serveurs, téléchargements volumineux, tâches par lots, etc.) en arrière-plan.

Qu'est-ce que nohup ?

nohup est l'abréviation de 'No Hang Up', ce qui signifie qu'il exécute une commande en ignorant le signal de raccrochage (signal HUP). Normalement, la fermeture d'une fenêtre de terminal met fin aux programmes en cours d'exécution, mais nohup agit comme un bouclier pour empêcher cela.

3 concepts clés

  • Ignorer le signal HUP: Ignore le signal de terminaison (SIGHUP) envoyé par le système lorsque l'utilisateur se déconnecte, permettant au processus de continuer à s'exécuter.
  • nohup.out: Si aucun fichier de sauvegarde n'est spécifié, les résultats de l'exécution (contenu de la sortie) sont automatiquement enregistrés dans le fichier `nohup.out`.
  • & (arrière-plan): nohup seul occupe le terminal. Habituellement, on ajoute `&` à la fin de la commande pour l'envoyer en arrière-plan.

Syntaxe et options principales (Shell)

nohup lui-même n'a pas d'options complexes. Il est utilisé en combinant la **commande à exécuter** et la **redirection (spécification de la direction de la sortie)**.

1. Configuration d'exécution de base

2. Gestion des logs (sortie)

3. Aide

Commande générée :

Essayez de combiner les commandes.

Description:

`nohup` Exécute la commande.

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

Exemples de scénarios d'utilisation

Les modèles nohup les plus couramment utilisés en pratique.

Utilisation la plus basique

nohup ./backup.sh &

Exécute un script en arrière-plan. La sortie est accumulée dans `nohup.out`.

Spécifier le nom du fichier de log (recommandé)

nohup python3 app.py > my-app.log 2>&1 &

Enregistre les logs dans `my-app.log` au lieu de `nohup.out`. `2>&1` signifie que les messages d'erreur seront également enregistrés dans le même fichier.

Exécuter sans logs

nohup ./heavy-task.sh > /dev/null 2>&1 &

Jette la sortie vers `/dev/null` lorsque le contenu de la sortie n'est pas nécessaire ou est trop volumineux, risquant de remplir le disque.

Trouver les processus nohup en cours d'exécution

ps -ef | grep app.py

Vérifie les processus en cours d'exécution avec la commande `ps`.

Installation

nohup est une commande de base incluse dans 'GNU Coreutils' et est déjà installée sur presque toutes les distributions Linux.

Vérification de l'installation

Dans la plupart des cas, aucune installation séparée n'est nécessaire. Vous pouvez vérifier l'état de l'installation avec la commande ci-dessous.

Vérifier la version

nohup --version

Astuces et précautions

Conseils utiles

  • Qu'en est-il d'une tâche déjà en cours d'exécution ?: Si vous avez oublié nohup et avez lancé une commande, vous pouvez l'arrêter avec `Ctrl+z`, la basculer en arrière-plan avec `bg`, puis utiliser la commande `disown -h %1` pour obtenir l'effet de nohup.
  • Méthode de terminaison: Un processus exécuté avec nohup ne peut pas être arrêté avec `Ctrl+c`. Vous devez trouver le PID (ID de processus) avec `ps -ef | grep [nom]` et le terminer avec la commande `kill -9 [PID]`.
  • Attention à l'espace disque: Si un programme de longue durée écrit continuellement des logs dans `nohup.out`, le fichier peut devenir gigantesque et bloquer le serveur. Videz-le régulièrement ou utilisez `/dev/null`.

commandes associées

Des commandes fonctionnellement similaires ou souvent utilisées ensemble.



Commandes de la même catégorie