recherche
MaisonOpération et maintenanceexploitation et maintenance LinuxUne explication sur la façon d'exécuter le système en arrière-plan sous Linux

Nous rencontrons souvent ce problème. Nous souhaitons exécuter des tâches à long terme sur le serveur Linux, mais la tâche échoue à mi-chemin en raison de l'instabilité du réseau. Comment éviter que la commande ne soit interférée en fermant la fenêtre du terminal localement/en déconnectant le réseau après la soumission de la commande ?

Voici trois méthodes qui peuvent facilement répondre aux besoins ci-dessus.

Analyse du problème :

Nous savons que lorsque l'utilisateur se déconnecte (déconnexion) ou que le réseau est déconnecté, le terminal recevra le signal HUP (raccrocher) et fermera tous ses processus enfants. Par conséquent, notre solution a deux manières : soit laisser le processus ignorer le signal HUP, soit laisser le processus s'exécuter dans une nouvelle session et devenir un processus enfant qui n'appartient pas à ce terminal.

Trois solutions :

1.nohup

nohup est sans doute la première solution à laquelle on pense. Comme son nom l'indique, le but de nohup est de faire en sorte que la commande soumise ignore le signal de raccrochage.

Nohup est très pratique à utiliser. Ajoutez simplement nohup avant la commande à traiter et l'erreur standard sera redirigée vers le fichier nohup.out par défaut. Généralement, nous pouvons ajouter "&" à la fin pour exécuter la commande en arrière-plan en même temps, ou nous pouvons utiliser ">filename 2>&1" pour modifier le nom du fichier de redirection par défaut.

exemple nohup

[root@pythontab ~]# nohup ping www.php.cn &
[1] 3059
nohup: appending output to `nohup.out'
[root@pythontab ~]# ps -ef |grep 3059
root      3059   984  0 15:06 pts/3    00:00:00 ping www.php.cn
root      3067   984  0 15:06 pts/3    00:00:00 grep 3059
[root@pythontab ~]#

2. setsid

nohup peut sans aucun doute empêcher notre processus d'être interrompu à mi-chemin en ignorant le signal HUP, mais si on y pense sous un autre angle, si notre processus n'appartient pas au processus enfant du terminal qui accepte le HUP signal, alors naturellement il ne sera plus affecté par le signal HUP. setsid nous aide à le faire.

L'utilisation de setsid est également très pratique. Il vous suffit d'ajouter setsid avant la commande à traiter.

Exemple setsid

[root@pythontab ~]# setsid ping www.php.cn
[root@pythontab ~]# ps -ef |grep www.php.cn
root     31094     1  0 07:28 ?        00:00:00 ping www.php.cn
root     31102 29217  0 07:29 pts/4    00:00:00 grep www.php.cn
[root@pythontab ~]#

Il convient de noter que dans l'exemple ci-dessus, notre ID de processus (PID) est 31094, et son ID parent (PPID) est 1 (c'est-à-dire est l'ID du processus d'initialisation), et non l'ID du processus du terminal actuel.

3. & subshell

Voici une autre petite astuce sur le sous-shell. Nous savons qu'inclure un ou plusieurs noms dans "()" permet d'exécuter ces commandes dans un sous-shell, étendant ainsi de nombreuses fonctions intéressantes, dont nous allons aborder maintenant.

Lorsque nous mettons "&" à l'intérieur de "()", nous constaterons que le travail soumis n'est pas dans la liste des travaux, c'est-à-dire qu'il ne peut pas être visualisé à travers les travaux. Voyons pourquoi cela fonctionne pour éviter le signal HUP.

Exemple de sous-shell

[root@pythontab ~]# (ping www.php.cn &)
[root@pythontab ~]# ps -ef |grep www.php.cn
root     16270     1  0 16:13 pts/4    00:00:00 ping www.php.cn
root     16278 15362  0 16:13 pts/4    00:00:00 grep www.php.cn
[root@pythontab ~]#

Comme le montre l'exemple ci-dessus, l'ID parent (PPID) du processus nouvellement soumis est 1 (le PID du processus d'initialisation), ce qui est pas le processus de l’ID de terminal actuel. Par conséquent, il n’appartient pas au processus enfant du terminal actuel et ne sera donc pas affecté par le signal HUP du terminal actuel.

Comparativement parlant, je préfère utiliser setsid, qui est simple et pratique. Bien sûr, cela dépend des préférences de chacun ici, et il n'y a pas beaucoup de différence d'effet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Opérations Linux: Utilisation du mode de maintenanceOpérations Linux: Utilisation du mode de maintenanceApr 19, 2025 am 12:08 AM

Le mode de maintenance Linux peut être entré via le menu Grub. Les étapes spécifiques sont: 1) Sélectionnez le noyau dans le menu Grub et appuyez sur «E» pour modifier, 2) Ajouter «unique» ou «1» à la fin de la ligne «Linux», 3) Appuyez sur Ctrl x pour démarrer. Le mode de maintenance fournit un environnement sécurisé pour les tâches telles que la réparation du système, la réinitialisation du mot de passe et la mise à niveau du système.

Linux: comment entrer le mode de récupération (et la maintenance)Linux: comment entrer le mode de récupération (et la maintenance)Apr 18, 2025 am 12:05 AM

Les étapes pour entrer le mode de récupération Linux sont: 1. Redémarrez le système et appuyez sur la touche spécifique pour entrer dans le menu GRUB; 2. Sélectionnez l'option avec (RecoveryMode); 3. Sélectionnez l'opération dans le menu Mode de récupération, tel que FSCK ou Root. Le mode de récupération vous permet de démarrer le système en mode utilisateur unique, d'effectuer des vérifications et des réparations du système de fichiers, modifier les fichiers de configuration et d'autres opérations pour aider à résoudre les problèmes système.

Composants essentiels de Linux: expliqués pour les débutantsComposants essentiels de Linux: expliqués pour les débutantsApr 17, 2025 am 12:08 AM

Les composants principaux de Linux incluent le noyau, le système de fichiers, le shell et les outils communs. 1. Le noyau gère les ressources matérielles et fournit des services de base. 2. Le système de fichiers organise et stocke les données. 3. Shell est l'interface permettant aux utilisateurs d'interagir avec le système. 4. Les outils courants aident à effectuer des tâches quotidiennes.

Linux: un regard sur sa structure fondamentaleLinux: un regard sur sa structure fondamentaleApr 16, 2025 am 12:01 AM

La structure de base de Linux comprend le noyau, le système de fichiers et le shell. 1) Ressources matérielles de gestion du noyau et utiliser uname-R pour afficher la version. 2) Le système de fichiers EXT4 prend en charge les fichiers volumineux et les journaux et est créé à l'aide de MKFS.EXT4. 3) Shell fournit une interaction de ligne de commande telle que Bash et répertorie les fichiers à l'aide de LS-L.

Opérations Linux: Administration et maintenance du systèmeOpérations Linux: Administration et maintenance du systèmeApr 15, 2025 am 12:10 AM

Les étapes clés de la gestion et de la maintenance du système Linux incluent: 1) maîtriser les connaissances de base, telles que la structure du système de fichiers et la gestion des utilisateurs; 2) Effectuer la surveillance du système et la gestion des ressources, utilisez le haut, le HTOP et d'autres outils; 3) Utilisez des journaux système pour dépanner, utiliser JournalCTL et d'autres outils; 4) Rédiger des scripts automatisés et la planification des tâches, utilisez des outils CRON; 5) Implémentez la gestion et la protection de la sécurité, configurez les pare-feu via iptables; 6) Effectuer l'optimisation des performances et les meilleures pratiques, ajuster les paramètres du noyau et développer de bonnes habitudes.

Comprendre le mode de maintenance de Linux: l'essentielComprendre le mode de maintenance de Linux: l'essentielApr 14, 2025 am 12:04 AM

Le mode de maintenance Linux est entré en ajoutant init = / bin / bash ou paramètres uniques au démarrage. 1. Entrez le mode de maintenance: modifiez le menu Grub et ajoutez des paramètres de démarrage. 2. Remontez le système de fichiers en mode de lecture et d'écriture: Mount-Oremount, RW /. 3. Réparer le système de fichiers: utilisez la commande fsck, telle que FSCK / DEV / SDA1. 4. Sauvegardez les données et opérez avec prudence pour éviter la perte de données.

Comment Debian améliore la vitesse de traitement des données HadoopComment Debian améliore la vitesse de traitement des données HadoopApr 13, 2025 am 11:54 AM

Cet article examine comment améliorer l'efficacité du traitement des données Hadoop sur les systèmes Debian. Les stratégies d'optimisation couvrent les mises à niveau matérielle, les ajustements des paramètres du système d'exploitation, les modifications de configuration de Hadoop et l'utilisation d'algorithmes et d'outils efficaces. 1. Le renforcement des ressources matérielles garantit que tous les nœuds ont des configurations matérielles cohérentes, en particulier en faisant attention aux performances du CPU, de la mémoire et de l'équipement réseau. Le choix des composants matériels de haute performance est essentiel pour améliorer la vitesse de traitement globale. 2. Réglage des paramètres JVM: Ajustez dans le fichier hadoop-env.sh

Comment apprendre Debian SyslogComment apprendre Debian SyslogApr 13, 2025 am 11:51 AM

Ce guide vous guidera pour apprendre à utiliser Syslog dans Debian Systems. Syslog est un service clé dans les systèmes Linux pour les messages du système de journalisation et du journal d'application. Il aide les administrateurs à surveiller et à analyser l'activité du système pour identifier et résoudre rapidement les problèmes. 1. Connaissance de base de Syslog Les fonctions principales de Syslog comprennent: la collecte et la gestion des messages journaux de manière centralisée; Prise en charge de plusieurs formats de sortie de journal et des emplacements cibles (tels que les fichiers ou les réseaux); Fournir des fonctions de visualisation et de filtrage des journaux en temps réel. 2. Installer et configurer syslog (en utilisant RSYSLOG) Le système Debian utilise RSYSLOG par défaut. Vous pouvez l'installer avec la commande suivante: SudoaptupDatesud

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP