알다시피 Cron은 최소 분 단위까지만 주기 실행을 지원한다.
그렇다면 초 단위로 실행하려면 어떻게 해야 할까?

답은 간단하다. sleep 명령어를 응용하면 된다. 검색해 보니 다양한 응용 방법들이 존재하는 것을 알 수 있었다.

내 경우는 이렇게 구현 성공했다. 5초 단위로 스크립트를 실행하려면 일단 크론으로 해당 명령어를 1분 단위로 실행되게 설정한 뒤 그 1분 내의 시간 동안 sleep을 이용해 5초 간격으로 12회 실행토록 설정하면 되는 것이다.

현재의 시각을 출력하는 초간단 스크립트를 만들고...
[root@localhost ~]# cat /root/5seconds.sh
#!/bin/sh
echo "$(date)" >>  /root/5seconds.txt
exit 0
[root@localhost ~]#

아래 커맨드를 크론에 1분 단위로 실행되도록 하되 세미콜론을 이용하여 12회 거듭 실행되도록 등록하면 된다. 어떻게 보면 참 단순무식한 방법이다. ^^
/root/5seconds.sh & sleep 5

*/1 * * * * root cat /dev/null > /root/5seconds.txt; /root/5seconds.sh & sleep 5; /root/5seconds.sh & sleep 5; /root/5seconds.sh & sleep 5; /root/5seconds.sh & sleep 5; /root/5seconds.sh & sleep 5; /root/5seconds.sh & sleep 5; /root/5seconds.sh & sleep 5; /root/5seconds.sh & sleep 5; /root/5seconds.sh & sleep 5; /root/5seconds.sh & sleep 5; /root/5seconds.sh & sleep 5; /root/5seconds.sh & sleep 5


크론 설정하고 크론 서비스 리스타트한 뒤 아래 명령어를 입력해 보자. 실제 5초 간격으로 /root/5seconds.txt 에 현재 시각이 기록되는 것을 확인할 수 있다.
[root@localhost ~]# watch -n 1 -d 'cat /root/5seconds.txt'

Creative Commons License