Android

Πώς να εκτελέσετε εντολές linux στο παρασκήνιο

Contain Yourself: An Intro to Docker and Containers by Nicola Kabar and Mano Marks

Contain Yourself: An Intro to Docker and Containers by Nicola Kabar and Mano Marks

Πίνακας περιεχομένων:

Anonim

Συνήθως όταν εκτελείτε μια εντολή στο τερματικό, πρέπει να περιμένετε έως ότου τελειώσει η εντολή για να μπορέσετε να εισάγετε μια άλλη εντολή. Αυτό ονομάζεται εκτέλεση της εντολής στο προσκήνιο ή στο προσκήνιο. Όταν μια διαδικασία τρέχει στο προσκήνιο, καταλαμβάνει το κέλυφος σας και μπορείτε να αλληλεπιδράσετε με αυτό χρησιμοποιώντας τις συσκευές εισόδου.

Τι γίνεται αν η εντολή διαρκεί πολύ και τελικά θέλετε να εκτελέσετε άλλες εντολές; Έχετε αρκετές επιλογές στη διάθεσή σας. Η πιο προφανής και απλή επιλογή είναι να ξεκινήσετε μια νέα συνεδρία του κελύφους και να εκτελέσετε την εντολή σε αυτήν. Μια άλλη επιλογή είναι να εκτελέσετε την εντολή στο παρασκήνιο.

Μια διαδικασία παρασκηνίου είναι μια διαδικασία / εντολή που ξεκινά από ένα τερματικό και εκτελείται στο παρασκήνιο, χωρίς αλληλεπίδραση από τον χρήστη., θα μιλήσουμε για τις διαδικασίες στο παρασκήνιο είναι το Linux. Θα σας δείξουμε πώς να ξεκινήσετε μια εντολή στο παρασκήνιο και πώς να διατηρήσετε τη διαδικασία να τρέχει μετά το κλείσιμο της περιόδου λειτουργίας του κελύφους.

Εκτελέστε μια εντολή Linux στο παρασκήνιο

Για να εκτελέσετε μια εντολή στο παρασκήνιο, προσθέστε το σύμβολο ampersand ( & ) στο τέλος της εντολής:

command &

Το αναγνωριστικό εργασίας του περιβλήματος (που περιβάλλεται από παρενθέσεις) και το αναγνωριστικό διαδικασίας θα εκτυπωθούν στο τερματικό:

25177

Μπορείτε να εκτελείτε ταυτόχρονα πολλαπλές διεργασίες στο παρασκήνιο.

Η διαδικασία παρασκηνίου θα συνεχίσει να γράφει μηνύματα στο τερματικό από το οποίο καλέσατε την εντολή. Για να καταργήσετε τα μηνύματα stdout και stderr χρησιμοποιήστε την ακόλουθη σύνταξη:

command > /dev/null 2>&1 &

>/dev/null 2>&1 σημαίνει ανακατεύθυνση stdout στο /dev/null και stderr to stdout .

Χρησιμοποιήστε το βοηθητικό πρόγραμμα jobs για να εμφανίσετε την κατάσταση όλων των εργασιών διακοπής και φόντου στην τρέχουσα συνεδρία του κελύφους:

jobs -l

Η έξοδος περιλαμβάνει τον αριθμό της εργασίας, το αναγνωριστικό διαδικασίας, την κατάσταση εργασίας και την εντολή που ξεκίνησε την εργασία:

+ 25177 Running ping google.com &

Για να φέρει μια διαδικασία φόντου στο προσκήνιο, χρησιμοποιήστε την εντολή fg :

fg

fg %1

Για να τερματίσετε τη διαδικασία φόντου, χρησιμοποιήστε την εντολή kill ακολουθούμενη από το αναγνωριστικό διαδικασίας:

kill -9 25177

Μετακίνηση νέας διαδικασίας στο παρασκήνιο

Για να μετακινήσετε μια τρέχουσα διαδικασία στο προσκήνιο στο παρασκήνιο:

  1. Σταματήστε τη διαδικασία πληκτρολογώντας Ctrl+Z Μετακινήστε τη διαδικασία σταματήματος στο παρασκήνιο πληκτρολογώντας το bg .

Διατηρήστε τις διεργασίες φόντου που εκτελούνται μετά την έξοδο από το κέλυφος

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

Ένας τρόπος είναι να αφαιρέσετε την εργασία από τον έλεγχο της λειτουργίας του κελύφους χρησιμοποιώντας το ενσωματωμένο κέλυφος απομόνωσης:

disown

disown %1

Βεβαιωθείτε ότι η εργασία καταργείται από τον πίνακα των ενεργών εργασιών χρησιμοποιώντας την εντολή jobs -l εντολών εργασιών. Για να ορίσετε όλες τις τρέχουσες διεργασίες, συμπεριλαμβανομένης της ανακληθείσας, χρησιμοποιήστε την εντολή ps aux .

Ένας άλλος τρόπος για να διατηρηθεί μια διαδικασία που εκτελείται μετά την έξοδο κελύφους είναι να χρησιμοποιήσετε nohup .

Η εντολή nohup εκτελεί ένα άλλο πρόγραμμα που καθορίζεται ως όρισμα και αγνοεί όλα τα σήματα SIGHUP (hangup). SIGHUP είναι ένα σήμα που αποστέλλεται σε μια διαδικασία όταν το τερματικό του ελέγχου είναι κλειστό.

Για να εκτελέσετε μια εντολή στο παρασκήνιο χρησιμοποιώντας την εντολή nohup , πληκτρολογήστε:

nohup command &

Η έξοδος της εντολής μεταφέρεται στο αρχείο nohup.out .

nohup: ignoring input and appending output to 'nohup.out'

Εναλλακτικές λύσεις

Υπάρχουν πολλά προγράμματα που σας επιτρέπουν να έχετε πολλαπλές διαδραστικές περιόδους ταυτόχρονα.

Οθόνη

Οθόνη οθόνης ή GNU είναι ένα πρόγραμμα τερματικού πολυπλέκτη το οποίο σας επιτρέπει να ξεκινήσετε μια συνεδρία οθόνης και να ανοίξετε οποιοδήποτε αριθμό παραθύρων (εικονικά τερματικά) μέσα σε αυτή την περίοδο λειτουργίας. Οι διεργασίες που εκτελούνται στην οθόνη θα συνεχίσουν να εκτελούνται όταν το παράθυρο τους δεν είναι ορατό ακόμη και αν αποσυνδεθείτε.

Tmux

Το Tmux είναι μια σύγχρονη εναλλακτική λύση για την οθόνη GNU. Με το Tmux, μπορείτε επίσης να δημιουργήσετε μια περίοδο σύνδεσης και να ανοίξετε πολλά παράθυρα μέσα σε αυτή την περίοδο σύνδεσης. Οι συνεδρίες Tmux είναι επίμονες, πράγμα που σημαίνει ότι τα προγράμματα που εκτελούνται στο Tmux συνεχίζουν να εκτελούνται ακόμη και αν κλείσετε το τερματικό.

συμπέρασμα

Για να εκτελέσετε μια εντολή στο παρασκήνιο, συμπεριλάβετε & στο τέλος της εντολής.

Όταν εκτελείτε μια εντολή στο παρασκήνιο, δεν χρειάζεται να περιμένετε μέχρι να τελειώσει, για να εκτελέσετε μια άλλη.

nohup fg bg θέσεις τερματισμού θέσεων εργασίας