Προς το περιεχόμενο

Απομακρυσμένη εκτέλεση στο παρασκήνιο ακόμη και μετά από αποσύνδεση


nikolaos_

Προτεινόμενες αναρτήσεις

Τον τελευταίο καιρό είμαι εκτός σπιτιού (διακοπές κλπ.) κι έχω αφήσει αναμένο και συνδεδεμένο (με UPS) το desktop με ubuntu linux πάνω. Όποτε πρέπει να κάνω δουλειά, έχω μαζί μου ένα "καβουρδιστήρι" laptop με Vista στο οποίο εγκατέστησα putty και Xming. Έτσι συνδέομαι στην κονσόλα του υπολογιστή του σπιτιού και μπορώ να ανοίξω και κανένα παράθυρο.

 

Ωστόσο έχω διαπιστώσει ότι ακόμη και αν τρέξω κάποια εφαρμογή στο παρασκήνιο (με &) πρέπει να διατηρείται η σύνδεση συνεχώς. Αν πέσει για οποιοδήποτε λόγο, π.χ. χάσω το σήμα του wi-fi, τότε αν ξανασυνδεθώ, οι διεργασίες μου είτε έχουν τερματιστεί μαζί με τη σύνδεση που έχασα, είτε είναι σε κατάσταση sleep. Οπότε πρέπει να κάνω kill -9 και να τις ξανατρέξω.

 

Υπάρχει τρόπος να αποσυνδέομαι και τα προγράμματα που έχω ξεκινήσει να συνεχίσουν να εκτελούνται, αλλά και να αποκτώ τον έλεγχό τους όταν επανασυνδεθώ; Εννοείται ότι θέλω και να αποσυνδέομαι επίτηδες, όχι μόνο συγκυριακά.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ωστόσο έχω διαπιστώσει ότι ακόμη και αν τρέξω κάποια εφαρμογή στο παρασκήνιο (με &) πρέπει να διατηρείται η σύνδεση συνεχώς.

 

Οι εφαρμογές κονσόλας δεν πρέπει να έχουν κανένα πρόβλημα.

Μήπως εννοείς εφαρμογή X; Εφόσον σκοτώνεις τον x-server (xming), προφανώς κι αυτές σκοτώνονται ή γίνονται defunct.

 

Για να ανοίγεις εφαρμογές X και αυτές να συνεχίζουν να εκτελούνται στο background όταν αποσυνδέεσαι, δοκίμασε με VNC. Για παράδειγμα, αν έχεις gnome, ενεργοποίησε τον ενσωματωμένο vino-server με κάποιον κωδικό πρόσβασης, βάλε και autologon ώστε ο τοπικός χρήστης να συνδέεται αυτόματα, και κάνε port forwarding την 5900.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ωραίο είναι αλλά δεν συνεργάζεται με τον Xming που έχω στο laptop.

Τι έκανα:

1. Ξεκινώ

>
screen

2. Πατώ return, ctrl-A D, με βγάζει detached

3. Γράφω

>
screen -ls

και μου δείχνει το socket που μόλις έκανα detached

4. Ξαναμπαίνω στο ίδιο socket

>
screen -r [i]το.αφημένο.socket[/i]

5. Αλλάζει το τερματικό, ξεκινώ

>
transmission &

και μου ανοίγει ένα παράθυρο λόγω Xming στο laptop με τα vista

6. Ctrl-A D για να κάνω detach, τo X-παράθυρο του transmission παραμένει ζωντανό. Βγαίνω στο terminal εκτός των screen sockets.

7. Βλέπω

>
screen -ls

το socket που άφησα να είναι detached (το transmission πάντα ζωντανό)

8. Αρχίζουν τα δύσκολα, κάνω exit. Γράφει logout, κλείνω το putty χειροκίνητα, χάνεται και το transmission!

9. Ξανασυνδέομαι με το putty,

>
screen -ls
ps aux|grep transmission

το socket υπάρχει ακόμη, αλλά το transmission άφαντο.

10. Μπαίνω στο socket και μου απαντά:

>
screen -r ...
[i]transmission: Fatal IO error 11 (Resource temporarily unavailable) on X server localhost:10.0.[/i]

 

Τι κάνουμε τώρα;

Αν αντί στο 8. να κάνω exit, μου έκανε connection lost, τι θα γινόταν;

 

Και φυσικά δε με ενδιαφέρει μόνο το transmission, αλλά και το evolution και άλλες X-παραθυρικές εφαρμογές που τρέχουν με το Xming όσο έχω σύνδεση.

 

---------- Προσθήκη στις 15:52 ---------- Προηγούμενο μήνυμα στις 15:38 ----------

 

Οι εφαρμογές κονσόλας δεν πρέπει να έχουν κανένα πρόβλημα.

Μήπως εννοείς εφαρμογή X; Εφόσον σκοτώνεις τον x-server (xming), προφανώς κι αυτές σκοτώνονται ή γίνονται defunct.

 

Για να ανοίγεις εφαρμογές X και αυτές να συνεχίζουν να εκτελούνται στο background όταν αποσυνδέεσαι, δοκίμασε με VNC. Για παράδειγμα, αν έχεις gnome, ενεργοποίησε τον ενσωματωμένο vino-server με κάποιον κωδικό πρόσβασης, βάλε και autologon ώστε ο τοπικός χρήστης να συνδέεται αυτόματα, και κάνε port forwarding την 5900.

 

Δεν δοκίμασα να δω τι κάνει μια εφαρμογή κονσόλας που ξεκινά με την επισήμανση "&" για να τρέξει στο παρασκήνιο. Πιθανόν να λειτουργεί, αν και έχω απορία για εφαρμογές κονσόλας που δεν επιστρέφουν στο shell όπως π.χ. το top, πώς παίρνεις τον έλεγχό τους;

 

Ο xming πάντως τρέχει στα Vista. Έχω την εντύπωση ότι οι εφαρμογές X εκτελούνται στον απομακρυσμένο ubuntu υπολογιστή και στέλνουν πακέτα στον xming στο laptop, τα οποία ο xming κάνει παράθυρα στα vista. Αν χαθεί η επικοινωνία, ο xming δε μπορεί να στείλει δεδομένα από το ποντίκι και το πληκτρολόγιο του laptop: είναι αυτός λόγος να καταρρεύσει η εφαρμογή X ; Αν δεν στέλνει πακέτα με τα παραθυρικά στοιχεία στο laptop, δε γίνεται να τρέχει κανονικά για όσο δε χρειάζεται είσοδο από ποντίκι-πληκτρολόγιο;

Έχω μήπως λάθος εντύπωση;

 

Έχω VNC server αλλά έχω μαζί και το compiz με αποτέλεσμα να μην μπορώ να μπω σωστά στο gnome (είναι ένα γνωστό bug). Άλλωστε το βλέπω και λίγο "θεωρητικά", πώς μπορεί ένας τοπικός χρήστης να τρέχει X εφαρμογές τοπικά στο gnome και ένας απομακρυσμένος να τρέχει τις δικές του X εφαρμογές χωρίς να μπλέκει στο gnome του άλλου, όπως θα κάνει το VNC.

 

Ευχαριστώ για την υπόδειξη πάντως.

 

---------- Προσθήκη στις 16:03 ---------- Προηγούμενο μήνυμα στις 15:52 ----------

 

Βρήκα και αυτό εδώ επιπλέον:

http://brainstorm.ubuntu.com/idea/21213/

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν δοκίμασα να δω τι κάνει μια εφαρμογή κονσόλας που ξεκινά με την επισήμανση "&" για να τρέξει στο παρασκήνιο. Πιθανόν να λειτουργεί, αν και έχω απορία για εφαρμογές κονσόλας που δεν επιστρέφουν στο shell όπως π.χ. το top, πώς παίρνεις τον έλεγχό τους;

sleep 1234 &

==> κοιμάται για 1234 δευτερόλεπτα, στο παρασκήνιο. Μπορείς να αποσυνδεθείς και να ξανασυνδεθείς κι αυτό θα συνεχίσει να δουλεύει (ε, κοιμάται).

Για να πάρεις τον έλεγχό του πατάς την εντολή fg.

 

Ο xming πάντως τρέχει στα Vista. Έχω την εντύπωση ότι οι εφαρμογές X εκτελούνται στον απομακρυσμένο ubuntu υπολογιστή και στέλνουν πακέτα στον xming στο laptop, τα οποία ο xming κάνει παράθυρα στα vista. Αν χαθεί η επικοινωνία, ο xming δε μπορεί να στείλει δεδομένα από το ποντίκι και το πληκτρολόγιο του laptop: είναι αυτός λόγος να καταρρεύσει η εφαρμογή X ; Αν δεν στέλνει πακέτα με τα παραθυρικά στοιχεία στο laptop, δε γίνεται να τρέχει κανονικά για όσο δε χρειάζεται είσοδο από ποντίκι-πληκτρολόγιο;

Έχω μήπως λάθος εντύπωση;

Ναι. Όταν το transmission θα θελήσει να ανανεώσει την οθόνη, θα στείλει ένα μήνυμα στον X server (xming στα Vista σου) ο οποίος δεν θα απαντήσει και έτσι το transmission θα καταρρεύσει.

 

Έχω VNC server αλλά έχω μαζί και το compiz με αποτέλεσμα να μην μπορώ να μπω σωστά στο gnome (είναι ένα γνωστό bug). Άλλωστε το βλέπω και λίγο "θεωρητικά", πώς μπορεί ένας τοπικός χρήστης να τρέχει X εφαρμογές τοπικά στο gnome και ένας απομακρυσμένος να τρέχει τις δικές του X εφαρμογές χωρίς να μπλέκει στο gnome του άλλου, όπως θα κάνει το VNC.

Εμένα μια χαρά μου δουλεύει το VNC με compiz. Επίσης, γίνεται να βάλεις το VNC να τρέχει σε δεύτερο screen ώστε να μην ενοχλεί τον χρήστη που κάθεται εκεί. Υπάρχουν αρκετά how-to στο google γι' αυτό.

 

Βρήκα και αυτό εδώ επιπλέον:

http://brainstorm.ubuntu.com/idea/21213/

Απλό disconnect/reconnect γίνεται και με το neatx. Disconnect + εκτέλεση στο background όμως απ' όσο ξέρω μόνο με VNC, RDP (και γενικότερα σύνδεση με image transferring προγράμματα και όχι x-servers), ή με κάποιον x-proxy...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

sleep 1234 &

==> κοιμάται για 1234 δευτερόλεπτα, στο παρασκήνιο. Μπορείς να αποσυνδεθείς και να ξανασυνδεθείς κι αυτό θα συνεχίσει να δουλεύει (ε, κοιμάται).

Για να πάρεις τον έλεγχό του πατάς την εντολή fg.

 

Δυστυχώς δεν είναι τόσο απλά τα πράγματα. Ένα process που ξεκινά με ένα controlling terminal αφενός έχει τις stdin, stdout και stderr connected στο terminal, αφετέρου βρίσκεται συνήθως κάτω από το job control του shell. Όταν αποσυνδέεσαι, εκτός από το να κλείσουν οι file descriptors γιατί χάνεται το pty, το shell στέλνει και ένα SIGHUP σε όλα τα processes που είναι κάτω από το job control του. Αυτό έχει διάφορες ενδιαφέρουσες συνέπειες:

 

  • Αν το process δε χειρίζεται ρητά το SIGHUP, τότε κάνει terminate
  • Αν το process προσπαθήσει να γράψει στις stdout, stderr ή να διαβάσει από την stdin, διάφορα ενδιαφέροντα πράγματα μπορούν να συμβούν

 

Ακόμα και αν επιζήσει από τα παραπάνω, τότε θα έχει χαθεί οριστικά από το job control του shell και δε θα μπορείς να το κάνεις reclaim με μια fg.

 

Επομένως, για να δουλέψει ένα process στο background, θα πρέπει:

  • Να τεθεί εκτός job control, είτε χρησιμοποιώντας τη nohup είτε βάζοντας το στο background και χρησιμοποιώντας το disown built-in των bourne shells.
  • Να έχει γίνει redirect τουλάχιστον η stdout και η stderr στο /dev/null

 

Με λίγα λόγια:

>
$ kot >/dev/null 2>&1 &
$ disown
$ exit

 

Αν επιπρόσθετα θέλει κανείς να ανακτήσει τον έλεγχο ενός process, τότε η μόνη αξιόπιστη λύση είναι να χρησιμοποιήσει screen, tmux, dtach ή κάποιον άλλον pty multiplexer.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλησπέρα δάσκαλε! Το ήξερα αυτό, από κεκτημένη ταχύτητα το λάθος... :) Με την sleep έπαιξε επειδή δεν χρησιμοποιεί τα descriptors:

>
alkisg@alkis:~/Desktop$ ls -lha /proc/14060/fd
lrwx------ 1 alkisg alkisg 64 2010-08-31 22:09 0 -> /dev/pts/4 (deleted)
lrwx------ 1 alkisg alkisg 64 2010-08-31 22:09 1 -> /dev/pts/4 (deleted)
lrwx------ 1 alkisg alkisg 64 2010-08-31 22:09 2 -> /dev/pts/4 (deleted)

 

Αλλά φυσικά η fg δεν. :)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλησπέρα δάσκαλε! Το ήξερα αυτό, από κεκτημένη ταχύτητα το λάθος... :) Με την sleep έπαιξε επειδή δεν χρησιμοποιεί τα descriptors:

άγαπητέ συμμαθητά Άλκη

άδίκως καταπονήσαι μελετών θέματα που δέν έδιδάχθημεν είσέτι.

Άλλωστε όπως άνεκοίνωσεν και ή κυρία Άδαμαντόγλου, το άντιεκπαιδευτικόν καί άντικοινωνικόν μέτρον τής βάσεως τού δέκα (10), δέν ισχύει πλέον.

Ώς εκ τούτου, ούδεμίαν σημασίαν έχει οίαδήποτε όρθή άπάντησις είς τυχόν έρώτημα, δεδομένου ότι θα προαχθώμεν άπαντες!

 

καλόν σχολικόν έτος!:mrgreen:

 

.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 2 εβδομάδες αργότερα...

Μια σκέψη που έκανα:

 

Μπορώ να καθορίσω πού θα αποστείλει ο Xorg τα δεδομένα για τα X windows μέσω κονσόλας; Μπορώ να αλλάζω όποτε θέλω τον αποδέκτη;

 

Π.χ. αντί να στέλνει εξωτερικά στο Xming στα windows αυτά τα δεδομένα, να τα αναδρομολογεί κατά βούληση σε κάποιον άλλο client ή και "πουθενά".

 

Έτσι μπορώ να "κρύβω" τα παράθυρα και να τρέχουν σαν εφαρμογές κι εγώ να αποσυνδεθώ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...