Έχετε έρθει στο σωστό μέρος εάν θέλετε να μάθετε πώς να εκτελείτε εντολές Linux όταν αλλάζει οποιοδήποτε αρχείο σε έναν κατάλογο εργασίας και όταν δημιουργούνται νέα αρχεία.
Στο Linux, μπορείτε να χρησιμοποιήσετε το cron για να προγραμματίσετε εντολές να εκτελούνται σε συγκεκριμένες ώρες.
Τι γίνεται όμως αν χρειάζεται να εκτελούνται εντολές κάθε φορά που ένα αρχείο τροποποιείται ή ένα νέο αρχείο προστίθεται σε έναν κατάλογο;
Αυτό είναι επίσης εύκολο να επιτευχθεί και υπάρχουν ορισμένα εργαλεία γραμμής εντολών για να το εκτελέσετε.
Ας αρχίσουμε!
Πίνακας περιεχομένων
watchexec
watchexec είναι ένα εύχρηστο και αυτόνομο εργαλείο που παρακολουθεί έναν δεδομένο κατάλογο εργασίας και εκτελεί μια εντολή εάν εντοπίσει αλλαγές, όπως ενημέρωση αρχείου ή δημιουργία νέου αρχείου.
Χαρακτηριστικά
- Δεν απαιτεί μια σύνθετη γραμμή εντολών που περιλαμβάνει xargs (εκτεταμένα ορίσματα).
- Ελέγχει για αλλαγές στον τρέχοντα κατάλογο και σε όλους τους υποκαταλόγους σε πραγματικό χρόνο.
- Δεν υπάρχει ανάγκη για χρόνο εκτέλεσης γλώσσας και δεν συνδέεται με κάποια συγκεκριμένη γλώσσα ή οικοσύστημα.
- Τα .gitignore και .ignore χρησιμοποιούνται από προεπιλογή για να αποφασίσουν ποια αρχεία θα αγνοηθούν οι ειδοποιήσεις.
- Οι ομάδες διεργασιών χρησιμοποιούνται για την παρακολούθηση των προγραμμάτων διχαλίωσης.
- Υποστηρίζεται η παρακολούθηση αρχείων με συγκεκριμένη επέκταση.
- Είναι συμβατό με OS X, Linux και Windows.
- Φιλτράρισμα και παράβλεψη συμβάντων με βάση το glob (Μοτίβα αναζήτησης αρχείων για την εύρεση μερικώς πανομοιότυπων ονομάτων αρχείων είναι δυνατά.
Εγκατάσταση του watchexec
Για να εγκαταστήσετε εύκολα το εργαλείο watchexec, επικολλήστε τον ακόλουθο σύνδεσμο στο τερματικό ή σε μια προτροπή κελύφους και πατήστε enter.
Linux & macOS
curl -sS https://webinstall.dev/watchexec | bash
Μετά την επιτυχή εγκατάσταση, η διαδρομή θα εμφανιστεί στην οθόνη. Στην περίπτωσή μου, αυτό το εργαλείο εγκαταστάθηκε στο /root/.local/bin
┌──(root💀kali)-[~] └─# curl -sS https://webinstall.dev/watchexec | bash Thanks for using webi to install '[email protected]' on 'Linux/x86_64'. Have a problem? Experience a bug? Please let us know: https://github.com/webinstall/webi-installers/issues Lovin' it? Say thanks with a Star on GitHub: https://github.com/webinstall/webi-installers Found /root/Downloads/webi/watchexec/cli-v1.18.9/watchexec-1.18.9-x86_64-unknown-linux-musl.tar.xz Extracting /root/Downloads/webi/watchexec/cli-v1.18.9/watchexec-1.18.9-x86_64-unknown-linux-musl.tar.xz Installing to /root/.local/opt/watchexec-vcli-v1.18.9/bin/watchexec Installed 'watchexec vcli-v1.18.9' as /root/.local/bin/watchexec
Και μετά την εγκατάσταση, μεταβείτε στο αποθετήριο .local/bin και ελέγξτε εάν το αρχείο υπάρχει ή όχι χρησιμοποιώντας αυτές τις εντολές.
cd .local/bin ls
Το επόμενο βήμα είναι να εξαγάγετε τη διαδρομή για να χρησιμοποιήσετε το εργαλείο watchexec.
export PATH="/root/.local/bin:$PATH"
Για εκτέλεση, απλώς πληκτρολογήστε watchexec στο τερματικό ως χρήστης root. Χρησιμοποιήστε αυτήν την εντολή για να δείτε ποιες σημαίες και επιλογές μπορούν να χρησιμοποιηθούν με το εργαλείο watchexec.
watchexec --help
Παράδειγμα εντολών
- Καλέστε το ls -la όταν αλλάξει οποιοδήποτε αρχείο σε αυτόν τον κατάλογο/υποκατάλογο. Αυτή η εντολή εμφανίζει όλα τα αρχεία που υπάρχουν στον κατάλογο κάθε φορά που εντοπίζει οποιαδήποτε τροποποίηση.
watchexec -- ls -la
- Κάθε φορά που αλλάζει οποιοδήποτε από τα αρχεία επέκτασης python, js, CSS ή Html στον τρέχοντα κατάλογο, εκτελέστε την εντολή. Εδώ μπορείτε να περάσετε όποια εντολή θέλετε. Οι επεκτάσεις αρχείων πρέπει να χωρίζονται με κόμμα.
watchexec --exts py,js,css,html <command>
- Εκτέλεση εντολής όταν αλλάξει οποιοδήποτε αρχείο στο lib ή το src. Η επιλογή “-w” παρακολουθεί ένα συγκεκριμένο αρχείο ή κατάλογο στο σύστημα.
watchexec -w lib -w src <command>
- Κλήση/επανεκκίνηση οποιασδήποτε υπηρεσίας όταν αλλάξει οποιοδήποτε αρχείο στον τρέχοντα κατάλογο (και σε όλους τους υποκαταλόγους).
watchexec -e html -r tor watchexec -e js,py -r mysql
Εδώ, η επιλογή “-r” επανεκκινεί τη διαδικασία ή την υπηρεσία εάν εκτελείται στο σύστημα.
Για περισσότερα παραδείγματα χρήσης του watchexec, μπορείτε να επισκεφτείτε το επίσημο αποθετήριο GitHub.
εισαγ
εισαγ είναι ένα απλό και εξαιρετικό βοηθητικό πρόγραμμα γραμμής εντολών για την εκτέλεση αυθαίρετων εντολών όταν πραγματοποιούνται τροποποιήσεις σε έναν δεδομένο κατάλογο.
Το “entr” σημαίνει Event Notify Test Runner. Αυτό το εργαλείο δημιουργήθηκε με στόχο την ταχεία ανάδραση και τις αυτοματοποιημένες δοκιμές.
Εγκατάσταση
Το entr είναι προεγκατεστημένο στη διανομή Linux. Σε περίπτωση που λείπει, πρέπει να το εγκαταστήσετε χειροκίνητα.
Αυτό το εργαλείο είναι απλό στη χρήση και μπορεί να εγκατασταθεί με την ακόλουθη εντολή.
sudo apt-get install entr
Ή μπορείτε επίσης να το εγκαταστήσετε κλωνοποιώντας τον επίσημο Αποθετήριο Git.
git clone https://github.com/eradman/entr.git
Στη συνέχεια, πλοηγηθείτε σε αυτόν τον κατάλογο και εγκαταστήστε τις απαιτήσεις χρησιμοποιώντας τις παρακάτω εντολές.
./configure make test make install
Για να δείτε τις διαθέσιμες επιλογές κατασκευής, εκτελέστε το ./configure -h
Παράδειγμα εντολών
Για να δείτε τις διαθέσιμες επιλογές και ορίσματα για την εντολή entr. Χρησιμοποιήστε την παρακάτω εντολή.
man entr
Αυτή η εντολή εμφανίζει το εγχειρίδιο χρήστη για την εντολή entr.
NAME entr — run arbitrary commands when files change SYNOPSIS entr [-acdnprsz] utility [argument /_ ...] DESCRIPTION A list of files provided on standard input, and the utility is executed using the supplied arguments if any of them change. entr waits for the child process to finish before responding to subsequent file system events. A TTY is also opened before entering the watch loop in order to support interac‐ tive utilities. The arguments are as follows: -a Respond to all events which occur while the utility is running. Without this option, entr consolidates events in order to avoid looping. This option has no effect in conjunction with the -r flag. -c Clear the screen before invoking the utility specified on the command line. Specify twice to erase the scroll back buffer. -d Track the directories of regular files provided as input and exit if a new file is added. This option also enables directories to be specified explicitly. If specified twice, all new entries to a directory are recognized, otherwise files with names beginning with ‘.’ are ig‐ nored. -n Run in non-interactive mode. In this mode entr does not attempt to read from the TTY or change its properties. -p Postpone the first execution of the utility until a file is modified. Manual page entr(1) line 1 (press h for help or q to quit)
- Για εκκίνηση και αυτόματη επαναφόρτωση ενός διακομιστή MySQL όταν αλλάξει οποιοδήποτε αρχείο JavaScript στον κατάλογο εργασίας. Κάθε φορά που οι αλλαγές αποθηκεύονται στο αρχείο, το entr φορτώνει ξανά τον διακομιστή MySQL.
ls *.js | entr -r mysql
- Για αυτόματη επαναφόρτωση ενός διακομιστή web ή τερματισμό εάν ο διακομιστής τερματιστεί.
$ ls * | entr -rz ./httpd
Για περισσότερες λεπτομέρειες και παραδείγματα σχετικά με την εντολή entr, μπορείτε να επισκεφτείτε την επίσημη διεύθυνση τους Αποθετήριο GitHub.
Τελευταίες λέξεις 👩💻
Ελπίζω να βρήκατε αυτό το άρθρο πολύ χρήσιμο για να μάθετε πώς να εκτελείτε εντολές Linux όταν αλλάζει οποιοδήποτε αρχείο σε έναν δεδομένο κατάλογο και όταν δημιουργούνται νέα αρχεία.
Μπορεί επίσης να σας ενδιαφέρει να μάθετε πώς να αφαιρείτε αρχεία και καταλόγους στο Linux.