Πώς να στείλετε και να πιάσετε το SIGTERM σε Bash και Python

Pos Na Steilete Kai Na Piasete To Sigterm Se Bash Kai Python



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

Όταν εργάζεστε με το Bash και την Python, μπορείτε να στείλετε το σήμα SIGTERM για να τερματίσετε ήπια τη διαδικασία που εκτελείται. Αυτή η ανάρτηση καλύπτει την αποστολή και τη σύλληψη του SIGTERM σε Bash και Python.

Τι είναι SIGN TERM

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







Το SIGTERM είναι ένα σήμα με ακέραια τιμή 15. Εκτελείται όταν θέλετε να τερματίσετε μια διεργασία που εκτελείται ήπια. Ακολουθεί η σύνταξη για τη χρήση του SIGTERM στο Bash:



σκοτώστε ΤΡΟΧΟΣ ΣΤΟΧΟΥ < PID >

ή

σκοτώστε - δεκαπέντε < PID >

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



σκοτώνω -l





Πώς να στείλετε και να πιάσετε το SIGTERM σε Bash και Python

Μπορεί να θέλετε να στείλετε και να πιάσετε το SIGTERM στο Bash και την Python σε διαφορετικές περιπτώσεις. Όταν εκτελείτε το πρόγραμμα Bash ή Python, μπορείτε να εκτελέσετε το σήμα SIGTERM για να σκοτώσετε το πρόγραμμα. Έχουμε διαφορετικά παραδείγματα για να κατανοήσουμε πώς στέλνετε και πιάνετε το SIGTERM στο Bash και την Python.

1. Χρήση σεναρίου Python

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



Έχουμε ένα σενάριο Python που πιάνει τον ακέραιο του απεσταλμένου σήματος. Επιπλέον, πιάνει το PID της τρέχουσας διαδικασίας.

Στην παρακάτω εικόνα, εκτελούμε το σενάριο Python και έχουμε έναν βρόχο while που εκτελείται κάθε λίγα δευτερόλεπτα. Σε ένα άλλο τερματικό, μπορούμε να στείλουμε το σήμα SIGTERM για να σκοτώσει τη διαδικασία, προσδιορίζοντας το PID που λαμβάνουμε από την εκτέλεση του σεναρίου Python:

Μόλις στείλουμε το σήμα SIGTERM, παρατηρούμε ότι το σενάριο σταματά να εκτελείται. Αυτό συμβαίνει επειδή συλλαμβάνει τον ακέραιο αριθμό σήματος. Σε αυτήν την περίπτωση, εκτελούμε το kill -15 για το σήμα SIGTERM. Μπορείτε επίσης να στείλετε το σήμα θανάτωσης SIGTERM χρησιμοποιώντας τη λέξη-κλειδί SIGTERM αντί για την ακέραια τιμή του. Ακόμα έχουμε το ίδιο αποτέλεσμα.

Μπορείτε επίσης να εκτελέσετε την εργασία σας Python χρησιμοποιώντας την ακόλουθη σύνταξη:

python3 < σενάριο/δουλειά > &

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

2. Χρήση σεναρίου Bash

Μπορείτε να χρησιμοποιήσετε την εντολή 'trap' για να πιάσετε ένα σήμα κατά την εκτέλεση ενός σεναρίου Bash. Σε αυτό το παράδειγμα, προσθέσαμε την εντολή 'trap' για να πιάσουμε το σήμα SIGTERM. Το σενάριο είναι ένας βρόχος 'for' για να εκτελεστεί η εντολή 'ημερομηνία' χίλιες φορές εάν δεν σταλεί σήμα SIGTERM.

Κατά την εκτέλεση της δέσμης ενεργειών Bash, μπορείτε να στείλετε το σήμα SIGTERM πατώντας το Ctrl + Z πλήκτρα πληκτρολογίου. Η εντολή 'trap' συλλαμβάνει το μεταδιδόμενο σήμα και ο βρόχος 'for' θα σταματήσει να εκτελείται. Θα λάβετε μια έξοδο που επιβεβαιώνει ότι η εργασία που εκτελείται έχει λάβει σήμα SIGTERM και έχει σταματήσει.

Έτσι στέλνετε και πιάνετε το SIGTERM στο Bash.

συμπέρασμα

Μπορείτε να στείλετε διαφορετικά σήματα για να επιτύχετε διαφορετικούς στόχους κατά την εκτέλεση μιας εργασίας ή ενός προγράμματος. Το SIGTERM αποστέλλεται για να σταματήσει ένα πρόγραμμα ήπια. Για την Python, χρειάζεστε έναν χειριστή σήματος για να πιάσετε ένα σήμα και μπορείτε να στείλετε το SIGTERM χρησιμοποιώντας την εντολή 'kill'. Μπορείτε να χρησιμοποιήσετε την εντολή 'trap' και τα πλήκτρα πληκτρολογίου στο Bash για να καταγράψετε και να στείλετε το σήμα SIGTERM. Αυτή η ανάρτηση παρουσίασε διαφορετικά παραδείγματα για το πώς να το πετύχετε αυτό λεπτομερώς.