Linux

[linux] n초 주기로 스크립트/명령어 실행

비번변경 2022. 9. 3. 02:23

개요

일정한 주기마다 스크립트나 명령어를 실행하는 대표적인 방법은 크론탭을 사용하는 것이다. 다만 크론탭의 최소 주기는 1분이라 초 단위로 명령어나 스크립트를 실행해야 할 때에는 사용할 수 없다.

 

이 글에서는 초 단위로 스크립트나 명령어를 실행하는 방법을 간단히 정리해둔다.

 

 

 

watch

프로그램을 주기적으로 실행하여 결과를 전체 화면에 표시한다.

watch [options] command
# -n : --interval. 실행 주기
# -t : header 제외하여 출력

 # 예시
watch -n 1 -t "date >> date.log"

예시 명령어의 경우 표준 출력을 리다이렉션 했기 때문에 출력이 보이지 않는다. 하지만 tail -f로 출력 파일을 확인하면 정상적으로 실행되는 상태임을 확인할 수 있다.

watch -n 1 -t "date >> date.log"

종료할 때는 ctrl + c를 입력하면 된다.

 

while문

while 문을 이용해도 된다.

while true; do <COMMAND>; sleep <INTERVAL>; done

# 예시
while true; do date; date >> date_log.log; sleep 1; done

# 정렬
while true; do \
	date; date >> date_log.log; sleep 1; \
done

do ~ done 구문 사이에는 여러 개의 실행 명령어를 작성할 수 있다. 예시는 1초 마다 date 실행 결과를 보여주고, 결과를 date_log.log 파일로 누적 기록하는 명령어다.

실행하면 date 결과가 터미널에 계속 누적되고

while true; do date; date &gt;&gt; date_log.log; sleep 1; done 표준 출력

log 파일에도 누적되는 것을 확인할 수 있다.

while true; do date; date &gt;&gt; date_log.log; sleep 1; done 파일 확인

 

 

참고 자료

https://linux.die.net/man/1/watch

https://blog.daum.net/sualchi/13720580