Πώς να εκτελέσετε μια εντολή με χρονικό όριο (Timeout) στο Linux


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

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

Σε αυτήν την σελίδα:
  1. Εκτελέστε εντολές Linux χρησιμοποιώντας το εργαλείο χρονικού ορίου
  2. Εκτελέστε εντολές Linux χρησιμοποιώντας το πρόγραμμα Timelimit

Εκτελέστε εντολές Linux χρησιμοποιώντας το εργαλείο χρονικού ορίου

Το Linux διαθέτει ένα βοηθητικό πρόγραμμα γραμμής εντολών που ονομάζεται timeout, το οποίο σας δίνει τη δυνατότητα να εκτελέσετε μια εντολή με χρονικό όριο.

Η σύνταξή του είναι η εξής.

timeout [OPTION] DURATION COMMAND [ARG]...

Για να χρησιμοποιήσετε την εντολή, καθορίζετε μια τιμή timeout (σε δευτερόλεπτα) με την εντολή που θέλετε να εκτελέσετε. Για παράδειγμα, για να λήξετε το χρονικό όριο μιας εντολής ping μετά από 5 δευτερόλεπτα, μπορείτε να εκτελέσετε την ακόλουθη εντολή.

timeout 5s ping google.com

Δεν χρειάζεται να καθορίσετε τα (α) μετά τον αριθμό 5. Η παρακάτω εντολή είναι η ίδια και θα εξακολουθεί να λειτουργεί.

timeout 5 ping google.com

Άλλα επιθέματα περιλαμβάνουν:

  • m που αντιπροσωπεύει λεπτά
  • h που αντιπροσωπεύει ώρες
  • d που αντιπροσωπεύει ημέρες

Μερικές φορές οι εντολές μπορεί να συνεχίσουν να εκτελούνται ακόμα και μετά το χρονικό όριο που στέλνει το αρχικό σήμα. Σε τέτοιες περιπτώσεις, μπορείτε να χρησιμοποιήσετε την επιλογή --kill-after.

Εδώ είναι η σύνταξη.

-k, --kill-after=DURATION

Πρέπει να καθορίσετε μια διάρκεια για να ενημερώσετε το timeout μετά από πόσο χρόνο θα σταλεί το σήμα kill.

Για παράδειγμα, η εντολή που εμφανίζεται θα τερματιστεί μετά από 8 δευτερόλεπτα.

timeout 8s tail -f /var/log/syslog

Εκτελέστε εντολές Linux χρησιμοποιώντας το πρόγραμμα Timelimit

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

Σε αντίθεση με την επιλογή timeout, το Timelimit έχει περισσότερες επιλογές όπως killsig, warnsig, killtime > και ώρα προειδοποίησης.

Το Timelimit βρίσκεται στα αποθετήρια συστημάτων που βασίζονται στο Debian και για να το εγκαταστήσετε, χρησιμοποιήστε την ακόλουθη εντολή.

sudo apt install timelimit

Για συστήματα βασισμένα σε Arch, μπορείτε να το εγκαταστήσετε χρησιμοποιώντας βοηθητικά προγράμματα AUR π.χ. Pacaur Pacman και Συσκευαστής.

Pacman -S timelimit
pacaur -S timelimit
packer -S timelimit

Άλλες διανομές Linux, μπορείτε να κάνετε λήψη του timelimit source και να το εγκαταστήσετε χειροκίνητα.

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

timelimit -t10 tail -f /var/log/pacman.log

Λάβετε υπόψη ότι εάν δεν καθορίσετε ορίσματα, το Timelimit χρησιμοποιεί τις προεπιλεγμένες τιμές: warntime=3600 δευτερόλεπτα, warnsig=15, killtime =120 και killsig=9.

συμπέρασμα

Σε αυτόν τον οδηγό, έχετε μάθει πώς να εκτελείτε εντολές με χρονικό όριο στο Linux. Κατά τον έλεγχο, μπορείτε να χρησιμοποιήσετε την εντολή Timeout ή το βοηθητικό πρόγραμμα Timelimit.

Η εντολή Timeout είναι εύκολη στη χρήση, αλλά το βοηθητικό πρόγραμμα Timelimit είναι λίγο περίπλοκο, αλλά έχει περισσότερες επιλογές. Μπορείτε να επιλέξετε την πιο κατάλληλη επιλογή ανάλογα με τις ανάγκες σας.