'tail'에 해당되는 글 1건

  1. 2008.08.31 tail명령에서 -F(대문자) 옵션을 아시나요? 2
시스템이야기2008. 8. 31. 00:55
로그 파일을 모니터링할 때 가장 유용하게 사용하는 명령이 tail이다. tail -f /var/log/messages 처럼 실행하면 messages에 새로 추가되는 로그를 실시간으로 모니터링할 수 있다. 서버를 조금이라도 다뤄본 사람은 수시로 tail -f 명령을 이용해봤을 것이다. 너무나 잘 아는 -f 옵션에 대해 얘기하려 했다면 이 글을 쓰지 않았을 것이다. ^^

-F 옵션은 사용하는 사람이 드물고 잘 알지도 못하는 경우가 많다. -F 는 -f 의 개선된 옵션으로 파일이 새롭게 생성되는 경우(rename, rotation 등)를 검사하여 파일을 새로 오픈해서 보여준다. 다음과 같은 상황일 때 유용하다.

1. 로그 파일이 로테이션될 때

error_log 파일을 tail -f error_log 명령으로 모니터링하고 있다. 이 error_log 파일은 특정 시간에 로테이션(현재까지 로그는 다른 파일명으로 변경되고 새롭게 error_log 파일이 생성)된다고 하자.
로테이션이 이뤄지게 되면, tail -f 명령을 다시 실행해서 모니터링해야 한다. 그러나 -F 옵션은 같은 파일명으로 새로 생성된 파일을 자동으로 파악하여 재실행없이 계속 모니터링할 수 있다.

2. 로그 파일이 심볼릭 링크되어 있는데, 링크되는 대상 파일이 자주 바뀔 때

다음과 같은 로그 파일이 있다.

-rw-r--r--  1 root      root      114556 Aug 27 11:58 log.20080827_AM
-rw-r--r--  1 root      root       44261 Aug 27 23:53 log.20080827_PM
-rw-r--r--  1 root      root       50704 Aug 28 11:54 log.20080828_AM
-rw-r--r--  1 root      root      100585 Aug 28 23:50 log.20080828_PM
-rw-r--r--  1 root      root      110558 Aug 29 11:44 log.20080829_AM
-rw-r--r--  1 root      root      157601 Aug 29 18:30 log.20080829_PM
lrwxr-xr-x  1 root      root           8 Aug 29 12:01 log.current -> log.20080829_PM

현재 이순간에는 log.20080829_PM 파일이 log.current 이름으로 링크되어 있다. 시간이 지나면, 새로운 파일명이 생성되고 신규 파일로 링크될 것이다. 이 때 tail -F log.current 명령으로 모니터링한다면 tail 명령을 재실행하지 않아도 지속적으로 모니터링할 수 있다.

위 tail 명령의 -F옵션은 리눅스와 FreeBSD에서 모두 사용할 수 있다.

Posted by 좋은진호