Bash 스크립트는 1초마다 실행되어야 합니다.

Bash 스크립트는 1초마다 실행되어야 합니다.

데이터 캐싱 시나리오를 위해 실행하는 몇 가지 정리 명령이 있습니다. 내 생각에 bash이 스크립트는 전체 정리 작업을 실행해야 하는지 확인하는 간단한 방법이라고 생각합니다. 그러나 캐시는 시간에 매우 민감하므로 검사 스크립트는 매초 실행되어야 합니다. 가장 좋은 접근 방식은 무엇입니까?

Crontab은 몇 분 밖에 걸리지 않으므로 대부분의 애플리케이션에 적합합니다.

bash스크립트를 백그라운드 서비스로 설치할 수 있나요 ?

둘째, & 명령으로 시작하여 잠시 잠자기 상태로 영원히 반복되도록 할 수 있습니까?

답변1

가장 간단한 방법은 watch 명령입니다. -n 옵션에 초 수를 전달합니다.

 watch -n1 'rand'

답변2

사용 sleep. 이 시도while true ; do ./your-script & ; sleep 1; done

답변3

다음 셸 스크립트(라고 부르겠습니다 repeat-cleanup.sh)를 사용하면 1초 지연을 두고 코드를 반복적으로 실행할 수 있습니다.각 실행 사이.

while true; do
  # Your cleanup code here, or execute a script containing said code
  sleep 1
done

그것을 사용하여 실행이중 분기:

( ./repeat-cleanup.sh & )

또는 스크립트를 완전히 건너뛰고 다음 줄로 시작할 수도 있습니다.

( while true; do ./cleanup.sh; sleep 1; done & )

설명하다

두 방법 모두 매초마다 스크립트를 실행합니다. 대신 스크립트를 실행할 때마다 1초씩 기다립니다. 스크립트가 수백 밀리초 이상 걸리지 않는 한 이는 문제가 되지 않습니다.

이중 분기는 프로세스를 포기하고 셸을 닫아도 계속 실행됩니다. 프로세스를 백그라운드에 두는 데만 사용하는 경우 이 방법은 효과가 없습니다 &.

저는 Alpine Linux에서 간단한 스크립트를 사용하여 두 가지 방법을 모두 테스트했으며 동일하게 작동합니다.

답변4

나는 다음과 같은 것을 사용하고 있습니다 :

do-the-job;
sleep 1; // wait one second till next run
./script-name &; // run same script again on background

그런데 맞는지는 모르겠네요 :)

관련 정보