데이터 캐싱 시나리오를 위해 실행하는 몇 가지 정리 명령이 있습니다. 내 생각에 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
그런데 맞는지는 모르겠네요 :)