Ви потрапили в потрібне місце, якщо хочете навчитися запускати команди 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
- Для автоматичного перезавантаження веб-сервера або завершення роботи, якщо сервер завершує роботу.
$ ls * | entr -rz ./httpd
Щоб отримати додаткові відомості та приклади щодо команди entr, ви можете відвідати їхній офіційний сайт Репозиторій GitHub.
Заключні слова 👩💻
Сподіваюся, ви знайшли цю статтю дуже корисною для вивчення того, як запускати команди Linux, коли будь-який файл у даному каталозі змінюється та коли створюються нові файли.
Вам також може бути цікаво дізнатися, як видалити файли та каталоги в Linux.