Bagaimana Menjalankan Perintah Saat File Berubah di Linux?

Diterbitkan: 2022-04-04

Anda telah datang ke tempat yang tepat jika Anda ingin mempelajari cara menjalankan perintah Linux saat file apa pun di direktori kerja berubah dan saat file baru dibuat.

Di Linux, Anda dapat menggunakan cron untuk menjadwalkan perintah agar berjalan pada waktu tertentu.

Tetapi bagaimana jika Anda membutuhkan perintah untuk dijalankan setiap kali file diubah, atau file baru ditambahkan ke direktori?

Itu juga mudah dicapai, dan ada beberapa alat baris perintah untuk melakukan itu.

Mari kita mulai!

watchexec

watchexec adalah alat yang berguna dan mandiri yang memantau direktori kerja yang diberikan dan menjalankan perintah jika mendeteksi perubahan apa pun seperti pembaruan file atau pembuatan file baru.

Fitur

  • Itu tidak memerlukan baris perintah kompleks yang melibatkan xargs (argumen yang diperluas).
  • Memeriksa perubahan dalam direktori saat ini dan semua subdirektori secara real-time.
  • Tidak perlu runtime bahasa, dan tidak terhubung ke bahasa atau ekosistem tertentu.
  • .gitignore dan .ignore digunakan secara default untuk memutuskan file mana yang akan diabaikan notifikasinya.
  • Grup proses digunakan untuk melacak program forking.
  • Menonton file dengan ekstensi tertentu didukung.
  • Ini kompatibel dengan OS X, Linux, dan Windows.
  • Memfilter dan mengabaikan peristiwa berdasarkan glob (Pola pencarian file untuk menemukan nama file yang identik sebagian dimungkinkan.

Pemasangan watchexec

Untuk menginstal alat watchexec dengan mudah, tempel tautan berikut ke terminal atau prompt shell, dan tekan enter.

Linux & macOS

 curl -sS https://webinstall.dev/watchexec | bash

Setelah instalasi berhasil, jalur akan ditampilkan di layar. Dalam kasus saya, alat ini dipasang di /root/.local/bin

 ┌──(rootkali)-[~] └─# curl -sS https://webinstall.dev/watchexec | bash Thanks for using webi to install 'watchexec@stable' 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

Dan setelah instalasi, navigasikan ke repositori .local/bin dan periksa apakah file ada atau tidak dengan menggunakan perintah ini.

 cd .local/bin ls

Langkah selanjutnya adalah mengekspor jalur untuk menggunakan alat watchexec .

 export PATH="/root/.local/bin:$PATH"

Untuk menjalankan, Cukup ketik watchexec di terminal sebagai pengguna root. Gunakan perintah ini untuk melihat flag dan opsi mana yang dapat digunakan dengan alat watchexec.

 watchexec --help

Contoh Contoh Perintah

  • Panggil ls -la ketika ada file yang berubah di direktori/subdirektori ini. Perintah ini menunjukkan semua file yang ada di direktori setiap kali mendeteksi modifikasi apa pun.
 watchexec -- ls -la
  • Setiap kali salah satu file ekstensi python, js, CSS, atau Html di direktori saat ini berubah, jalankan perintah. Di sini Anda dapat melewati perintah apa pun yang Anda inginkan. Ekstensi file harus dipisahkan dengan koma.
 watchexec --exts py,js,css,html <command>
  • Jalankan perintah ketika ada file di lib atau src berubah. Opsi "-w" melihat file atau direktori tertentu dalam sistem.
 watchexec -w lib -w src <command>
  • Panggil/mulai ulang layanan apa pun ketika file apa pun di direktori saat ini (dan semua subdirektori) berubah.
 watchexec -e html -r tor watchexec -e js,py -r mysql

Di sini, opsi "-r" me-restart proses atau layanan jika berjalan di sistem.

Untuk contoh penggunaan watchexec lainnya, Anda dapat mengunjungi repositori resmi GitHub.

masuk

entr adalah utilitas baris perintah yang sederhana dan sangat baik untuk menjalankan perintah arbitrer ketika ada modifikasi yang terjadi di direktori tertentu.

entr ” adalah singkatan dari Event Notify Test Runne r. Alat ini dibuat dengan tujuan membuat umpan balik yang cepat dan pengujian otomatis.

Instalasi

entr sudah diinstal sebelumnya di distribusi Linux. Jika tidak ada, Anda harus menginstalnya secara manual.

Alat ini mudah digunakan dan dapat diinstal dengan perintah berikut.

 sudo apt-get install entr

Atau Anda juga dapat menginstalnya dengan mengkloning repositori Git resmi.

 git clone https://github.com/eradman/entr.git

Selanjutnya, navigasikan ke direktori itu dan instal persyaratan menggunakan perintah di bawah ini.

 ./configure make test make install

Untuk melihat opsi build yang tersedia, jalankan ./configure -h

Contoh Contoh Perintah

Untuk melihat opsi dan argumen yang tersedia untuk perintah entr . Gunakan perintah berikut.

 man entr

Perintah ini menampilkan manual pengguna untuk perintah 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)
  • Untuk meluncurkan dan memuat ulang server MySQL secara otomatis ketika ada file JavaScript yang berubah di direktori kerja. Setiap kali perubahan disimpan ke file, entr memuat ulang server MySQL.
 ls *.js | entr -r mysql
  • Untuk memuat ulang server web secara otomatis atau menghentikan jika server keluar.
 $ ls * | entr -rz ./httpd

Untuk detail dan contoh lebih lanjut tentang perintah entr , Anda dapat mengunjungi repositori GitHub resmi mereka.

Kata-kata Terakhir

Saya harap Anda menemukan artikel ini sangat berguna dalam mempelajari cara menjalankan perintah Linux ketika file apa pun di direktori tertentu berubah dan ketika file baru dibuat.

Anda mungkin juga tertarik untuk mempelajari cara menghapus file dan direktori di Linux.