Android

Η εντολή nohup του Linux

5 πραγματικές υποθέσεις που έγιναν επεισόδια στην 10η εντολή (Μέρος Α') - Blackbird

5 πραγματικές υποθέσεις που έγιναν επεισόδια στην 10η εντολή (Μέρος Α') - Blackbird

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

Anonim

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

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

Πώς να χρησιμοποιήσετε την εντολή nohup

Η σύνταξη για την εντολή nohup έχει ως εξής:

nohup COMMAND

Η εντολή δεν δέχεται άλλες επιλογές εκτός από τις τυπικές --help και --version .

Ας ρίξουμε μια ματιά στο ακόλουθο παράδειγμα:

nohup mycommand

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

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

Εάν αποσυνδεθείτε ή κλείσετε το τερματικό, η διαδικασία δεν τερματίζεται.

Εκτέλεση της εντολής στο παρασκήνιο

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

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

nohup mycommand &

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

25177

Μπορείτε να χρησιμοποιήσετε το ID της εργασίας για να μεταφέρετε την εντολή στο προσκήνιο χρησιμοποιώντας την εντολή fg .

Αν για κάποιο λόγο θέλετε να τερματίσετε τη διαδικασία, χρησιμοποιήστε την εντολή kill ακολουθήστε την ταυτότητα διαδικασίας:

kill -9 25132

Ανακατεύθυνση εξόδου σε αρχείο

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

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

nohup mycommand > mycommand.out 2>&1 &

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

nohup mycommand > mycommand.out 2> mycommand.err &

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

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

Οθόνη

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

Tmux

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

Αποκηρύσσω

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

συμπέρασμα

nohup σάς επιτρέπει να αποτρέψετε την διακοπή εντολών όταν αποσυνδέεστε ή εξέρχεστε από το τερματικό.

nohup terminal