Πώς να εκτελέσετε την εντολή όταν αλλάζει το αρχείο στο Linux;

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

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

Τι γίνεται όμως αν χρειάζεται να εκτελούνται εντολές κάθε φορά που ένα αρχείο τροποποιείται ή ένα νέο αρχείο προστίθεται σε έναν κατάλογο;

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

Ας αρχίσουμε!

watchexec

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

Χαρακτηριστικά

  • Δεν απαιτεί μια σύνθετη γραμμή εντολών που περιλαμβάνει xargs (εκτεταμένα ορίσματα).
  • Ελέγχει για αλλαγές στον τρέχοντα κατάλογο και σε όλους τους υποκαταλόγους σε πραγματικό χρόνο.
  • Δεν υπάρχει ανάγκη για χρόνο εκτέλεσης γλώσσας και δεν συνδέεται με κάποια συγκεκριμένη γλώσσα ή οικοσύστημα.
  • Τα .gitignore και .ignore χρησιμοποιούνται από προεπιλογή για να αποφασίσουν ποια αρχεία θα αγνοηθούν οι ειδοποιήσεις.
  • Οι ομάδες διεργασιών χρησιμοποιούνται για την παρακολούθηση των προγραμμάτων διχαλίωσης.
  • Υποστηρίζεται η παρακολούθηση αρχείων με συγκεκριμένη επέκταση.
  • Είναι συμβατό με OS X, Linux και Windows.
  • Φιλτράρισμα και παράβλεψη συμβάντων με βάση το glob (Μοτίβα αναζήτησης αρχείων για την εύρεση μερικώς πανομοιότυπων ονομάτων αρχείων είναι δυνατά.

Εγκατάσταση του watchexec

Για να εγκαταστήσετε εύκολα το εργαλείο watchexec, επικολλήστε τον ακόλουθο σύνδεσμο στο τερματικό ή σε μια προτροπή κελύφους και πατήστε enter.

  Πώς να εκτελέσετε το Gmail στην επιφάνεια εργασίας Linux με το Wavebox

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” επανεκκινεί τη διαδικασία ή την υπηρεσία εάν εκτελείται στο σύστημα.

  Πώς να παίξετε το Trine 2 στο Linux

Για περισσότερα παραδείγματα χρήσης του 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.

  Πώς να κάνετε το Gnome Shell φιλικό προς το χρήστη σε Linux

Τελευταίες λέξεις 👩‍💻

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

Μπορεί επίσης να σας ενδιαφέρει να μάθετε πώς να αφαιρείτε αρχεία και καταλόγους στο Linux.