Détacher une commande à l’aide de ‘nohup’

gnome-terminal-icon

Ceux qui ont l’habitude d’utiliser la ligne de commande sous GNU/Linux savent que l’on peut lancer ses applications (navigateur, traitement de texte, petit script perso) tout en les détachants du terminal qui les à lancé, afin de pouvoir garder la main afin de saisir d’autres commandes.
Ceci se fait à l’aide du caractère ‘&‘, par exemple:

  $ mon_application &

Cependant, il arrive que l’on ferme le terminal par inadvertance, ou lorsque le timeout de connexion tombe alors que l’on était connecté à distance sur le terminal, pour avoir comme effet d’arrêter toutes les applications lancées à partir de ce terminal, suite à la déconnexion de notre utilisateur.

Pour remédier à ce problème, il existe la commande ‘nohup‘ qui permet au processus de rester actif même après la déconnexion de l’utilisateur.

 $ nohup mon_application &

Par défaut, cette commande à pour effet de créer un fichier de sortie appelé ‘nohup.out‘ contenant la sortie standard de la commande passée en paramètre. Ceci peut être problématique dans certains cas où le programme est lancé via un script, ce qui peut dans certains cas générer des fichiers de sortie très conséquents en taille mémoire.

On peut supprimer ce comportement en redirigeant tous les flux vers /dev/null, c’est à dire vers le ‘trou noir’ d’où rien ne ressort jamais :

$ nohup mon_application &>/dev/null &

Pour en savoir plus:
http://fr.wikipedia.org/wiki/Nohup

2 réflexions au sujet de « Détacher une commande à l’aide de ‘nohup’ »

  1. Salut !

    Merci pour ce billet 😉 Juste une question tout de même !

    Comment fait on si l’application que l’on souhaite mettre en tâche de fond demande une saisie pendant son exécution ?

    Cas concret : nohup rsync -avz -e ssh loginutilisateur@ipserveurdistant:/dossierdistantasync /dossierlocal/ &>/dev/null &
    Il va me demander le mot de passe du serveur (ssh) distant !

    Comment faire pour lui filer le ou les différentes entrées clavier ? Ce n’est pas possible ? sans faire une clée of course. Je parle en générale, là c’est un exemple où il demande le mot de passe, mais dans un autre exemple, il pourrait poser une question ou la réponse serait oui/non/ignorer par exemple.

    Ensuite, un truc qui n’a rien à voir… Coup de gueule pour les sites qui utilise une couleur du genre gris sur fond blanc (ou gris plus clair)… et petit caractères en plus, sinon c’est pas marrant :/

    Merci pour vos lumières 🙂

    1. Salut,
      le problème avec nohup est que l’on ne peut pas l’utiliser avec des « input interactifs » comme une saisie clavier

      Pour résoudre ce problème, il semble qu’il y ait ce moyen (non testé) décrit sur cette page wiki (http://en.wikipedia.org/wiki/Nohup), partie « Overcoming hanging », il faut via cette commande:
      1. Rediriger toutes les I/O sur la commande distante nohup
      2. Dire à ta commande ssh local de sortir dés qu’elle a démarrée le(s) processus distants

      Avec une commande du style:

      ssh -f user@host 'sh -c "( (nohup command-to-nohup 2>&1 >output.file

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *