2013-07-13 5 views
2

J'ai une application appelée iTerminal sur mon iPhone. Je SSH dans mon instance d'Amazon et démarre le serveur et cela fonctionne très bien (c'est un fichier .jar). Cependant, au moment où je quitte l'application iTerminal, le serveur s'arrête. Ce qui donne?! Je pensais que le serveur est supposé être en cours d'exécution! La seule façon que mon serveur peut arrêter est si j'émets une commande de sortie. Cela n'a pas de sens.Arrêt du serveur à la sortie d'iTerminal

+0

Cela se produit également avec Terminal sur Mac. Comment arrêter l'arrêt du serveur/fichier lorsque mon terminal est fermé? – raaj

Répondre

2

Vous devez détacher le processus du serveur de votre shell. Votre serveur est un processus fils du shell et le système met fin aux enfants du shell lorsque le shell se termine.

Une façon de faire est est en utilisant nohup et l'exécution du processus en arrière-plan de la coquille comme ceci:

nohup /your/server/command &

nohup devient le processus de l'enfant et, comme son nom l'indique, il ignorera le signal de raccrochage (HUP) normalement envoyé à un processus fils.

La commande & exécute la commande en arrière-plan afin que vous obteniez une invite de shell. Lorsque vous quittez le shell, le service doit toujours s'exécuter en tant que processus indépendant.

1

J'ai découvert:

Il suffit de taper 'écran' puis exécutez votre serveur/commande. Maintenant, lorsque vous quittez les terminaux, il ne tue pas l'application.

+0

Alors que cela fonctionnera, 'screen' est un gestionnaire de fenêtres complet et est quelque peu exagéré pour simplement détacher un processus. Je dirais que la solution «nohup» que j'ai mentionnée est plus appropriée. – ianjs