Linux에서 파일이 변경될 때 명령을 실행하는 방법은 무엇입니까?

작업 디렉토리의 파일이 변경되고 새 파일이 생성될 때 Linux 명령을 실행하는 방법을 배우려면 올바른 위치에 왔습니다.

Linux에서는 cron을 사용하여 특정 시간에 실행되도록 명령을 예약할 수 있습니다.

그러나 파일이 수정될 때마다 또는 새 파일이 디렉토리에 추가될 때마다 명령을 실행해야 하는 경우에는 어떻게 해야 합니까?

또한 쉽게 달성할 수 있으며 이를 수행하기 위한 몇 가지 명령줄 도구가 있습니다.

시작하자!

watchexec

watchexec 주어진 작업 디렉토리를 모니터링하고 파일 업데이트 또는 새 파일 생성과 같은 변경 사항을 감지하면 명령을 실행하는 편리한 독립 실행형 도구입니다.

특징

  • xargs(확장 인수)를 포함하는 복잡한 명령줄이 필요하지 않습니다.
  • 현재 디렉터리 및 모든 하위 디렉터리의 변경 사항을 실시간으로 확인합니다.
  • 언어 런타임이 필요하지 않으며 특정 언어나 생태계와 연결되어 있지 않습니다.
  • .gitignore 및 .ignore는 기본적으로 알림을 무시할 파일을 결정하는 데 사용됩니다.
  • 프로세스 그룹은 분기 프로그램을 추적하는 데 사용됩니다.
  • 특정 확장자의 파일 보기가 지원됩니다.
  • OS X, Linux 및 Windows와 호환됩니다.
  • glob 기반 이벤트 필터링 및 무시(부분적으로 동일한 파일 이름을 찾기 위한 파일 검색 패턴이 가능합니다.

watchexec 설치

watchexec 도구를 쉽게 설치하려면 터미널 또는 쉘 프롬프트에 다음 링크를 붙여넣고 Enter 키를 누릅니다.

리눅스 및 맥OS

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"

실행하려면 root 사용자로 터미널에 watchexec를 입력하기만 하면 됩니다. 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” 옵션은 시스템에서 실행 중인 프로세스 또는 서비스를 다시 시작합니다.

  iPhone에서 iCloud로 메모를 이동하는 방법

더 많은 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를 실행하십시오.

샘플 예제 명령

enter 명령에 사용할 수 있는 옵션과 인수를 보려면 다음 명령을 사용하십시오.

man entr

이 명령은 enterr 명령에 대한 사용 설명서를 표시합니다.

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)
  • 작업 디렉토리에서 JavaScript 파일이 변경될 때 MySQL 서버를 시작하고 자동으로 다시 로드하려면. 변경 사항이 파일에 저장될 때마다 entr은 MySQL 서버를 다시 로드합니다.
 ls *.js | entr -r mysql
  • 웹 서버를 자동으로 다시 로드하거나 서버가 종료되면 종료합니다.
$ ls * | entr -rz ./httpd

entr 명령에 대한 자세한 내용과 예를 보려면 공식 웹 사이트를 방문하십시오. GitHub 저장소.

  Arch Linux를 정리하고 속도를 높이는 방법

마지막 한마디 👩‍💻

주어진 디렉토리의 파일이 변경되고 새 파일이 생성될 때 Linux 명령을 실행하는 방법을 배우는 데 이 기사가 매우 유용했기를 바랍니다.

Linux에서 파일과 디렉토리를 제거하는 방법을 배우는 데 관심이 있을 수도 있습니다.