Εκτέλεση εντολών μπάσων στο παρασκήνιο με τον σωστό τρόπο [Linux]
Όλοι ήταν εκεί: ψάχνετε να εκτελέσετε ένα τερματικό πρόγραμμα και να το κρατήσετε σε λειτουργία. Το πρόβλημα είναι ότι αυτό το πρόγραμμα είναι παλιό ή δεν περιλαμβάνει ένα χαρακτηριστικό που του επιτρέπει να τρέχει ως δαίμονας στο παρασκήνιο. Ευτυχώς, υπάρχουν διάφοροι τρόποι να αναγκαστούν τα προγράμματα να λειτουργούν στο παρασκήνιο ούτως ή άλλως.
Το Bash μπορεί να το κάνει αυτό μόνο του και δεν χρειάζεται να εγκατασταθούν επιπλέον προγράμματα. Αυτό το άρθρο θα εξελιχθεί σε διάφορους τρόπους με τους οποίους μπορείτε να πιέσετε τα προγράμματα τερματικών στο παρασκήνιο και να τα κρατήσετε εκεί. Κάθε μέθοδος που αναφέρεται είναι καλό για τη δική της ειδική περίπτωση χρήσης.
Τερματισμός εντολής με &
Αν θέλετε να πιέσετε μια εντολή στο παρασκήνιο, χρησιμοποιώντας το &
στο τέλος είναι ένας εύκολος τρόπος να το κάνετε αυτό. Έρχεται όμως με μια παγίδα. Η χρήση &
δεν αποσυνδέει την εντολή μακριά από εσάς. το απλώνει ακριβώς στο παρασκήνιο για να μπορείτε να συνεχίσετε να χρησιμοποιείτε ένα τερματικό.
εντολή &
Όταν η συνεδρία τερματικού κλείσει, η εντολή τελειώνει. Χρησιμοποιώντας &
είναι καλό αν χρειαστεί να σπρώξετε κάτι για λίγο, αλλά μην περιμένετε να συνεχιστεί για πάντα.
& Μετά από εντολή, στη συνέχεια αποκλείστε το
Εκτελώντας μια εντολή με απλά &
σπρώχνει την προς τα πίσω και συνεχίζει να τρέχει όσο το παράθυρο του τερματικού είναι ανοιχτό. Εάν, ωστόσο, θέλετε να διατηρήσετε αυτήν την εντολή σε συνεχή λειτουργία, ακόμα και όταν τελειώνει η περίοδος τερματικού σας, μπορείτε να χρησιμοποιήσετε την εντολή disown
.
Για να χρησιμοποιήσετε αυτήν τη μέθοδο, ξεκινήστε πρώτα την προσθήκη ενός &
.
εντολή &
Όπως αναφέρθηκε παραπάνω, η χρήση &
σπρώχνει αυτή την εντολή στο παρασκήνιο αλλά δεν την αποσυνδέει από το χρήστη. Μπορείτε να το επιβεβαιώσετε πληκτρολογώντας jobs
στο τερματικό. Θα εμφανίσει την εντολή που εκτελείται στο παρασκήνιο.
Απλά πληκτρολογήστε την disown
στο κέλυφος, και αυτό θα κάνει ακριβώς αυτό (και μπορείτε ξανά να επαληθεύσετε αυτό με την εντολή jobs
).
& Μετά από μια εντολή με / dev / null
Η προσθήκη &
μετά από μια εντολή θα σπρώξει μια εντολή στο παρασκήνιο, αλλά ως αποτέλεσμα η εντολή φόντου θα συνεχίσει να εκτυπώνει μηνύματα στο τερματικό καθώς τη χρησιμοποιείτε. Αν θέλετε να αποφύγετε αυτό, σκεφτείτε να ανακατευθύνετε την εντολή στο /dev/null
.
εντολή &> / dev / null &
Αυτό δεν εμποδίζει το κλείσιμο της εντολής όταν κλείνει το τερματικό. Ωστόσο, όπως αναφέρθηκε παραπάνω, είναι δυνατό να χρησιμοποιήσετε την disown
για να αποκλείσετε την εντολή που εκτελείται από το χρήστη.
Nohup, με & και / dev / null
Σε αντίθεση με τις προηγούμενες εντολές, η χρήση του nohup
σάς επιτρέπει να εκτελέσετε μια εντολή στο παρασκήνιο και να την κρατήσετε σε λειτουργία. Πως? Το Nohup παρακάμπτει το σήμα HUP (σήμα κλείνει), καθιστώντας δυνατή την εκτέλεση εντολών στο παρασκήνιο ακόμα και όταν ο τερματικός σταθμός είναι απενεργοποιημένος. Συνδυάστε αυτήν την εντολή με την ανακατεύθυνση στο /dev/null
(για να αποτρέψετε το nohup να κάνει ένα αρχείο nohup.out) και όλα πηγαίνουν στο παρασκήνιο με μία εντολή.
nohup εντολή &> / dev / null &
συμπέρασμα
Τα περισσότερα προγράμματα τερματικών στο Linux σήμερα έχουν χαρακτηριστικά ενσωματωμένα ώστε να μπορούν να τρέχουν στο παρασκήνιο με λίγη προσπάθεια. Μαζί με αυτό, τα σύγχρονα συστήματα init (όπως το systemd) μπορούν να επιτρέψουν στους χρήστες να ξεκινήσουν προγράμματα όπως τις υπηρεσίες κατά την εκκίνηση ή οποτεδήποτε.
Ακόμα, ορισμένα προγράμματα στο Linux δεν έχουν την ικανότητα να τρέχουν ως δαίμονας ή να ενσωματώνονται με σύγχρονα συστήματα init. Αυτό είναι μια πραγματική ταλαιπωρία, αλλά είναι κατανοητό, καθώς δεν έχουν όλοι οι προγραμματιστές την ικανότητα ή τον χρόνο να προσθέσουν νέα χαρακτηριστικά.
Ευτυχώς, εντολές όπως nohup
ή disown
εξακολουθούν να είναι μια πραγματικότητα και μπορούν ακόμα να κλείσουν το χάσμα στην κίνηση προγραμμάτων όπως αυτό στο παρασκήνιο. Δεν είναι τέλεια ή φανταχτερά, αλλά κάνουν τη δουλειά όταν χρειάζεται.
Πώς μετακινείτε τρέχοντα προγράμματα τερματικών στο παρασκήνιο; Πείτε μας παρακάτω!
Image Credit: Ένα τερματικό-τέσσερις οθόνες