11
votes

Quitter SSH -X Session avec un programme d'interface graphique en cours d'exécution, mais laissant le programme à exécuter sur l'hôte distant

J'ai ssh-ed à une machine distante. J'ai activé X11 Transfert (SSHX) et j'ai lancé un programme d'interface graphique.

Le programme prend 5 minutes pour mettre en place un certain traitement, mais le traitement réel prend 1-2 heures. Je ne veux pas diffuser de données pendant que le programme fonctionne. Je ne veux même pas voir à nouveau le programme car il produit des fichiers sous forme de sortie lorsqu'elle se termine et je peux simplement les scp.

Alors, comment puis-je quitter la session SSH, mais laisser le programme en cours d'exécution sur la machine? CRTL + C dans le terminal?

Edit: Pour la réponse, veuillez consulter mon commentaire juste ci-dessous.


2 commentaires

Ok alors j'ai trébuché à travers ce que je pense est le moyen le plus simple de le faire. Je lisais sur l'écran et je me suis produit que vous pouvez utiliser l'utilitaire d'écran pour détacher et vous déconnecter en laissant les processus exécutés sur l'ordinateur distant. Après cela, vous pouvez vous connecter et réapprocher.


On peut utiliser Xpra pour X Programmes de la même manière vers Écran pour les programmes Terminal: Démarrez X Programmes sous IT, le détacher / réaménagement. - en.wikipedia.org/wiki/Xpra


5 Réponses :


0
votes

exécuté ssh -x -f login @ machine Votreprogram devrait faire le tour.


2 commentaires

Mais cela ne fera pas de session SSH Quitter, il sera ouvert à l'arrière-plan, ou ..?


Oui, ce sera actif à l'arrière-plan. Sans cela, vous ne seriez pas en mesure de communiquer avec l'application que vous avez démarrée.



0
votes

Démarrage de votre programme avec NOHUP Program & permettra de fermer uniquement votre terminal - le programme sera toujours en cours d'exécution.

Vous ne pourrez pas voir l'interface utilisateur après avoir terminé la session SSH, mais puisque vous n'en avez pas besoin de toute façon - ça va faire le travail.


0 commentaires

10
votes

Longue histoire courte - Vous ne pouvez pas faire cela sans faire des modifications à la façon dont vous exécutez des choses. Une application d'interface graphique nécessite une cible de serveur X d'accepter les mises à jour de l'interface GUI - si vous utilisez votre serveur X local pour le faire, cela nécessitera (1) la connexion à ouvrir (2) que vous gérez réellement la mises à jour.

Un moyen d'utiliser quelque chose comme XVFB - qui est une manière sans tête d'hébergement un virtuel x-serveur X. Au-dessus et au-delà des exemples fournis sur la page Wikipedia, les gens qui semblent faire une utilisation fréquente de ce mécanisme sont SELENIUM Utilisateurs.


2 commentaires

On peut utiliser xpra de la même manière: Démarrer X Programmes sous IT, le détachement / RateTach. - en.wikipedia.org/wiki/Xpra


N'avait pas entendu parler de Xpra, très cool - c'est comme l'écran pour les applications x. Cela semble semblable à la facture pour l'OP.



2
votes

génial, je suis à la recherche d'une réponse acceptable à mon problème pendant des heures, et enfin une apparition. SSH -X -F Login @ Machine Yourprogram a parfaitement fonctionné pour moi. Bien que j'utilise SSH -Y -F Login @ Machine Yourprogram. Cela m'a conduit noix.


1 commentaires

Vous pouvez écrire un commentaire au lieu de dire tout cela dans une réponse.



1
votes

Comme certaines personnes ont dit, SSHX utilise votre serveur X local. Il a donc besoin de la connexion. J'ai eu le même problème, je voulais quitter ssh mais laisser des applications de l'interface graphique en cours d'exécution. Pour ce faire, j'ai installé X Server et VNC Server sur l'hôte distant. Avec un client VNC sur votre ordinateur local, vous pouvez facilement vous connecter au serveur VNC et déconnecter les applications GUI en cours d'exécution.

Au fait, vous aurez de meilleures performances avec VNC ou X2GO. Dans mon cas, Firefox était très lent et certains sites ne se chargeaient pas du tout avec SSHX, même avec des optimisations ou -c.


0 commentaires