Πώς να ξεκινήσετε την εντολή Linux στο παρασκήνιο και να αποσυνδέσετε τη διαδικασία στο τερματικό

Pos Na Xekinesete Ten Entole Linux Sto Paraskenio Kai Na Aposyndesete Te Diadikasia Sto Termatiko



Σε αυτόν τον οδηγό, θα μάθουμε πώς να εκτελούμε μια εντολή στο παρασκήνιο και πώς να αποσυνδέουμε τις διεργασίες από το τερματικό.

Προαπαιτούμενα:

Για να εκτελέσετε τα βήματα σε αυτόν τον οδηγό, χρειάζεστε τα ακόλουθα στοιχεία:

  • Ένα λειτουργικό σύστημα Linux. Μάθε περισσότερα για εγκατάσταση ενός Ubuntu VM στο VirtualBox .
  • Πρόσβαση σε α μη χρήστης root με άδεια sudo .

Εκτέλεση των Διαδικασιών από το Τερματικό

Κάθε φορά που εκτελείται μια εντολή, οι διεργασίες δημιουργούνται κάτω από το τερματικό. Εάν το τερματικό είναι κλειστό, όλες οι σχετικές διεργασίες τερματίζονται αυτόματα. Σε ορισμένες περιπτώσεις, μπορεί να είναι ενοχλητικό. Για παράδειγμα:







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

Για την αντιμετώπιση αυτών των προβλημάτων, υπάρχουν μερικές επιλογές:



  • Εκτέλεση των διαδικασιών στο παρασκήνιο
  • Αποσύνδεση των διεργασιών από το τερματικό

Οι διεργασίες που εκτελούνται στο παρασκήνιο δεν θα υπερκαλύψουν την έξοδο του τερματικού. Επιπλέον, το τερματικό είναι ελεύθερο να εκτελέσει τις πρόσθετες εντολές. Για αποσπασμένες διεργασίες, δεν θα τερματιστούν ακόμη και αν το τερματικό είναι κλειστό.



Εκκίνηση των διαδικασιών στο παρασκήνιο

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





Για να δείξουμε, χρησιμοποιούμε την εντολή «ναι»:

$ άνδρας Ναί



Μέθοδος 1:

Υπάρχουν μερικοί τρόποι με τους οποίους μπορούμε να στείλουμε τη διαδικασία που εκτελείται στο παρασκήνιο.

Αρχικά, σταματάμε τη διαδικασία χωρίς να την τερματίσουμε. Για να το κάνετε αυτό, εκτελέστε την ακόλουθη εντολή και πατήστε 'Ctrl + Z':

$ Ναί 'Γειά σου Κόσμε' > / dev / μηδενικό

Τώρα, εκτελέστε την εντολή 'bg' για να στείλετε τη διαδικασία στο παρασκήνιο:

$ bg

Μόλις ωθηθεί στο παρασκήνιο, η διαδικασία συνεχίζεται. Η ακόλουθη εντολή παραθέτει όλες τις εργασίες που εκτελούνται στο παρασκήνιο:

$ θέσεις εργασίας

Μέθοδος 2:

Στην προηγούμενη μέθοδο, η διαδικασία ξεκίνησε αρχικά να εκτελείται στο προσκήνιο. Διακόψαμε τη διαδικασία, τη στείλαμε στο παρασκήνιο και μετά συνεχίσαμε. Αντίθετα, μπορούμε να εκτελέσουμε τη διαδικασία απευθείας στο παρασκήνιο.

Για να το κάνετε αυτό, προσθέστε το σύμβολο '&' στο τέλος της εντολής:

$ Ναί 'Ω Λονγκ Τζόνσον' > / dev / μηδενικό &

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

$ θέσεις εργασίας

Μέθοδος 3:

Μπορούμε επίσης να ξεκινήσουμε τις διαδικασίες στο παρασκήνιο με τη βοήθεια του tmux , ένας ισχυρός πολυπλέκτης που μπορεί να διαχειριστεί πολλές συνεδρίες τερματικού σε ένα μόνο παράθυρο. Δεν είναι προεγκατεστημένο στο Linux. Ωστόσο, είναι διαθέσιμο για όλες τις μεγάλες διανομές Linux. Μάθε περισσότερα για εγκατάσταση tmux σε Linux .

Στο παρακάτω παράδειγμα, χρησιμοποιούμε tmux για να κάνουμε ping σε έναν στόχο και να καταγράψουμε την έξοδο:

$ tmux νέο -ρε 'ping -c 9 127.0.0.1 > ping.log'

Το αρχείο καταγραφής επαληθεύει εάν η εντολή εκτελείται με επιτυχία ή όχι:

$ Γάτα ping.log

Είναι μόνο ένα παράδειγμα του τι μπορεί να κάνει το tmux. Μάθε περισσότερα για tmux με παραδείγματα .

Επιστρέφοντας τις θέσεις εργασίας στο προσκήνιο

Εάν επιθυμείτε να επαναφέρετε μια εργασία στο προσκήνιο, χρησιμοποιούμε την εντολή «fg». Χρειαζόμαστε επίσης τον αριθμό εργασίας από την εντολή jobs.

Πρώτα, καθορίστε την εργασία που θέλετε να φέρετε στο προσκήνιο:

$ θέσεις εργασίας

Τώρα, χρησιμοποιήστε την εντολή 'fg':

$ fg %< ΑΡΙΘΜΟΣ δουλειας >

Αποσύνδεση των Διαδικασιών από το Τερματικό

Οποιαδήποτε διαδικασία που σχετίζεται με ένα τερματικό τερματίζεται μόλις κλείσει το τερματικό, είτε εκτελείται στο προσκήνιο είτε στο παρασκήνιο. Για να αποφύγουμε τον τερματισμό της διαδικασίας, διαχωρίζουμε τη διαδικασία στόχου από το τερματικό/κέλυφος.

Μέθοδος 1:

Για να απορρίψουμε μια διαδικασία, χρειαζόμαστε πρώτα μια διαδικασία παρασκηνίου:

$ Ναί 'qwerty' > / dev / μηδενικό &

Ελέγξτε τη λίστα των εργασιών παρασκηνίου που εκτελούνται:

$ θέσεις εργασίας

Σημειώστε τον σειριακό αριθμό της εργασίας παρασκηνίου προορισμού. Τώρα, χρησιμοποιήστε την εντολή 'disown' για να την αποσυνδέσετε από το τερματικό:

$ αποκηρύσσω %< ΑΡΙΘΜΟΣ δουλειας >

Η εργασία στόχος θα πρέπει τώρα να εξαφανιστεί από τη λίστα εργασιών:

$ θέσεις εργασίας

Ωστόσο, μπορείτε να δείτε τη διαδικασία να εκτελείται στο παρασκήνιο:

$ ΥΣΤΕΡΟΓΡΑΦΟ προς την

Μέθοδος 2:

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

Η χρήση του 'nohup' είναι η εξής:

$ nohup < εντολή > &

Επαληθεύστε εάν η εργασία δημιουργήθηκε με επιτυχία:

$ θέσεις εργασίας

Μέθοδος 3:

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

Για παράδειγμα, για να ξεκινήσετε τον Firefox και να τον αποσυνδέσετε εντελώς από το τερματικό, χρησιμοποιήστε την ακόλουθη εντολή:

$ firefox dev / μηδενικό &>/ dev / μηδενικό &

Εδώ:

  • ο /dev/null είναι μια ειδική συσκευή στο Linux που απαλλάσσει από τυχόν δεδομένα που είναι γραμμένα σε αυτήν.
  • Στην προηγούμενη εντολή, η είσοδος διαβάζεται από και η έξοδος αποστέλλεται στο /dev/null . Μάθετε περισσότερα για το άλλους τρόπους χρήσης του /dev/null .

συμπέρασμα

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

Εάν χρειάζεται να εκτελέσετε ορισμένες εντολές σε ένα συγκεκριμένο μοτίβο, μπορούμε να το μεταφορτώσουμε ως α systemd υπηρεσία . Για απομακρυσμένα μηχανήματα, μπορούμε επίσης να χρησιμοποιήσουμε εργαλεία τρίτων όπως π.χ Μπορεί να αυτοματοποιήσει σχεδόν τα πάντα .

Καλή πληροφορική!