GNU/Linux >> Tutoriels Linux >  >> Linux

La commande Nohup sous Linux vous permet d'exécuter des commandes même après la déconnexion

Nohup signifie "pas de raccrochage". C'est une commande extrêmement utile pour faire fonctionner votre processus même après votre déconnexion.

L'une des utilisations les plus courantes peut être trouvée dans l'exécution de commandes chronophages via une connexion SSH. Si vous pensez que votre session SSH peut tomber, vous pouvez utiliser la commande avec nohup de cette manière :

nohup your_command &

Qu'est-ce que la commande nohup ?

Nohup peut être considéré comme un emballage. Vous préfixez votre commande avec nohup comme ceci :

nohup COMMAND ARGS ....

Noup son but est d'intercepter et d'empêcher SIGHUP signaux d'atteindre COMMAND .

Lorsque vous préfixez votre commande avec nohup , l'entrée sera redirigée depuis un fichier illisible ( nohup COMMAND ). En termes simples, n'appelez pas une commande avec nohup si vous devez envoyer une entrée à cette commande. Quand vous nohup une commande, elle doit pouvoir s'exécuter sans surveillance.

Noup tentera d'abord de rediriger la sortie vers ./nohup.out ou l'enverra à ~/nohup.out si besoin est. Vous pouvez également décider où rediriger la sortie comme ceci :

nohup COMMANDS >/path/to/output/file

Il n'y a pas grand chose à dire sur nohup , il n'a pas une longue liste d'options. Il n'y a que de l'–aide et –version .

Exemple d'utilisation de la commande nohup

Exécuter un script avec nohup est aussi simple que cela.

nohup ./nhp.sh

Notez que nohup n'a pas mis le processus en arrière-plan. Noup n'est là que pour intercepter SIGHUP signaux. Une fois la commande en cours d'exécution, vous pouvez continuer et fermer votre terminal. Il vous avertira qu'un processus est en cours d'exécution. Confirmez que vous voulez le tuer.

Lorsque vous avez fermé votre terminal, tous les processus enfants ont reçu un signal SIGHUP. Nohup a empêché ce signal d'atteindre ma commande. L'image suivante montre les informations de processus sur ma commande alors que le terminal était encore en cours d'exécution.

Vous voyez le PPID? C'est l'ID du processus parent. Lorsque vous avez demandé à fermer le terminal, tous les enfants de PPID ont reçu un SIGHUP signal. Noup empêché ce signal d'atteindre notre script. Le processus parent s'est terminé et notre script est devenu orphelin. Lorsqu'un processus devient orphelin, il obtient automatiquement assign 1 (systemd ou init) en tant que parent.

Comme vous pouvez le voir, il n'est vraiment pas difficile de démontrer l'utilisation de nohup . Commande très simple. Vous pouvez bifurquer le processus en arrière-plan comme ceci :

nohup ./nhp.sh &

Vous pouvez également décider où la sortie est redirigée comme ceci :

nohup ./nhp.sh >/path/to/file &

Notez que si vous arrêtez ou redémarrez le système Linux, cela tuera la commande. Lorsque vous demandez un arrêt ou un redémarrage, tous les processus reçoivent un SIGTERM puis un SIGKILL . Ces signaux ne sont pas interceptés par nohup .

Nohup via une connexion SSH

Une utilisation qui vient souvent à l'esprit lorsque vous apprenez nohup est de pouvoir démarrer un processus sur un ordinateur distant via SSH. Logiquement, exécuter une commande avec nohup vous permettrait de vous déconnecter de votre connexion SSH et le processus continuerait à s'exécuter.

nohup COMMAND &

Un problème courant est que parfois SSH se "bloque" lors de la déconnexion. En effet, SSH refusera souvent de perdre tout flux de données vers et depuis tout processus d'arrière-plan. Il "se bloquera" alors jusqu'à ce que le processus soit terminé.

Ce problème peut souvent être résolu en redirigeant les 3 flux de données.

nohup COMMAND >./nohup.out 2>./nohup.err &

J'espère que cet article rapide vous a aidé à mieux utiliser les sessions SSH. Si vous avez des questions ou des suggestions, veuillez laisser un commentaire ci-dessous.


Linux
  1. 10 utilisations étonnantes et mystérieuses du symbole (!) ou de l'opérateur dans les commandes Linux

  2. 10 commandes Linux de base que vous devez connaître

  3. 4 conseils pour vous aider à tirer le meilleur parti de la commande Linux df

  4. Commandes Linux de A à Z

  5. Commande d'écho Linux

Comment exécuter plusieurs commandes Linux en une seule commande

3 commandes Linux que vous avez oubliées

Comment exécuter plusieurs commandes Linux à la fois dans le terminal Linux

20 principales commandes Linux dont vous aurez besoin quotidiennement

Commande Nohup sous Linux

Top 50+ des commandes Linux que vous DEVEZ connaître