J'utilisais un programme Perl TCP Socket 24 * 7 sur mon serveur UBUNTU. Habituellement, je voudrais ouvrir le terminal Gnome et aller dans le chemin du script et démarrer le script Perl. Le terminal Gnome reste ouvert tout au long. Cela a bien fonctionné pendant 6 mois. Mais depuis trois jours, cela ne fonctionne pas correctement. Le terminal Gnome se ferme automatiquement et donc le programme Socket. Le lendemain matin, j'ai à nouveau ouvert le terminal et exécuté le programme de socket, puis le terminal a été fermé pendant la nuit. Je n'ai trouvé aucune solution sur le Web. Besoin d'aide pour résoudre le problème
Exécutez votre programme dans screen . Il suffit d'installer l'écran, ouvrez votre terminal et tapez "écran". À partir de ce moment, tout ce que vous ferez sera dans un "écran" persistant qui ne dépend pas du fait que le shell extérieur soit fermé ou non.
Si votre terminal est fermé, vous pouvez en ouvrir un nouveau et rattacher l’écran.
Si j'écris des programmes qui doivent être exécutés comme ceci (je les lance habituellement à distance via ssh), j'écris habituellement dans un contrôle, de sorte que le programme refuse de démarrer sauf s'il est exécuté à l'écran (vérifiez si la variable d'environnement STY existe). De cette façon, je ne peux pas exécuter accidentellement le programme en dehors de l’écran.
Il est possible de démarrer le programme en arrière-plan (votre script peut avoir besoin d'être modifié si ce n'est pas possible) avec ...
Nohup {program} > {program.out} 2>&1 &
La sortie du programme sera redirigée vers {program.out}. Si vous modifiez le ">" en ">>", la sortie sera ajoutée au lieu d'écrire par rapport à la précédente utilisation.
Cela éliminerait le besoin d'une session de terminal. En outre, les messages d'erreur que vous avez peut-être manqués en raison de l'interruption ou de l'arrêt de la session du terminal seront également interceptés.
Presse CTRL + ALT + F2 et connectez-vous avec votre nom d'utilisateur et votre mot de passe.
Exécutez la commande à partir de là et elle ne devrait pas se fermer.