<!doctype linuxdoc system> <article> <title> 리눅스에서 프로세스의 통계를 얻는 방법 <author>저자: Albert M. C. Tam(<url url="maelto: bertie@scn.org" name="bertie@scn.org" >) <date>마지막 갱신: 1997년 8월 8일 금요일 09:25:58 HKT <trans>역자: 박민석(<url url="maelto: mpark@correl4.snu.ac.kr" name=" mpark@correl4.snu.ac.kr" >) <tdate>번역일: 1999년 2월 17일 수요일 <abstract> 머릿말: 이 문서의 저작권(copyleft)은 Albert M. C. Tam(<url url="maelto: bertie@scn.org" name="bertie@scn.org" >)에게 있다. 모든 사본과 부속 문서에 저자 및 편집자의 이름과 본 주의사항이 들어있는 한, 즉 이 문서를 변조하지 않은 한, 상업적이지 않은 목적으로 이 문서를 사용하고 복사 및 배포할 허가권을 준다. 이 문서가 도움이 되기를 바라면서 배포하지만, 명시적이건 암묵적이건 어떤 보장도 할 수 없다. 이 문서에 기재된 정보의 정확성을 기하기 위해 최선의 노력을 다하기는 했지만, 저자나 편집자, 관리자는 실수나, 여기 기재된 정보를 사용한 결과로 입은 손해 등에 대해 어떤 책임도 질 수 없다. 이 문서는 리눅스 호스트에서 프로세스의 통계를 얻는 방법과 그에 사용되는 여러 가지 명령의 사용법을 설명한다. 커널 버젼 1.3.73 보다 이후의 커널을 사용하고 있다고 가정하기로 한다. (최근 레드햇 4.1의 2.0.27 커널에서 시험되었다. -> 역자주: 1999년 2월 현재의 커널은 2.2.1 버젼이다.) 1.3.73 이전의 커널을 사용하고 있다면, 프로세스 통계를 쓰기 위해서 패치를 해야만 한다. 오류나 누락된 점을 발견했다면 망설이지 말고 <url url="maelto: bertie@scn.org" name="bertie@scn.org" >로 알려주기 바란다. 어떤 내용이건 환영한다. </abstract> <toc> <sect>프로세스 통계(Process Accounting)란 무엇인가?<p> 프로세스 통계란 리눅스에서 수행된 명령들을 요약하고 기록하는 방법이다. 요즘의 리눅스 커널은 수행된 명령과 그 명령을 내린 사용자, 소요된 CPU 시간 등을 기록한 프로세스 통계를 낼 수 있다. 프로세스 통계를 씀으로써, 시스템 자원이 어떻게 사용되고 있고 사용자들 사이의 자원 배분은 어떤가에 대한 자세한 통계 정보를 얻을 수 있으며, 시스템 모니터링도 가능하다. 리눅스 프로세스 통계의 현재 상태 1.3.73 이후 버젼의 커널에는 프로세스 통계를 지원하는 기능이 통합되어 있다. 이보다 오래된 커널을 쓰고 있다면 패치를 해야 한다. 패치는 <url url="ftp://iguana.hut.fi/pub/linux/Kernel/process_accounting" name="iguana.hut.fi/pub/linux/Kernel/process_accounting" > 에서 구할 수 있다. 리눅스 프로세스 통계를 위한 필요 사항 커널 1.3.73 이후 버젼의 리눅스 커널이 필요하다. 필자는 2.x 버젼의 커널을 권한다. 커널 소스는 <url url="http://sunsite.unc.edu/pub/Linux/kernel/v2.0" name="sunsite.unc.edu/pub/Linux/kernel/v2.0" > 에서 구할 수 있다. 프로세스 통계용 소프트웨어 가지고 있는 리눅스 배포판에 따라, 프로세스 통계용 소프트웨어가 시스템에 설치되어 있을 수도 있고, 그렇지 않을 수도 있다. 없다면 <url url="http://sunsite.unc.edu/pub/Linux/system/admin/quota-acct-modified.tgz" name="sunsite.unc.edu/pub/Linux/system/admin/quota-acct-modified.tgz" > 의 패키지를 다운받도록 한다. </p> <sect>리눅스 프로세스 통계의 설정<p> <enum> <item> 프로세스 통계용 소프트웨어를 컴파일하고 설치한다. 프로세스 통계용 소프트웨어 패키지는 <url url="http://sunsite.unc.edu/pub/Linux/system/admin/quota-acct-modified.tgz" name="sunsite.unc.edu/pub/Linux/system/admin/quota-acct-modified.tgz" > 에서 얻을 수 있다. <item> 시스템의 init 스크립트를 바꿔서 부팅할 때 프로세스 통계를 시작하도록 한다. 예를 들면 <verb> # 프로세스 통계 시작. if [ -x /sbin/accton ] then /sbin/accton /var/log/pacct echo "Process accounting turned on." fi </verb> 과 같은 스크립트를 넣는다. <item> 프로세스 통계 파일인 "pacct"를 만든다. 프로세스 통계용 소프트웨어는 수행된 모든 명령들을 디폴트로 /var/log/pacct에 저장한다. 이 파일을 만들려면 touch /var/log/pacct 라고 해준다. 이 기록 파일의 소유자는 루트여야 하며, 루트에게는 읽기-쓰기 허가권을, 그 밖의 사용자들에게는 읽기 허가권을 주도록 한다. chown root /var/log/pacct chmod 0644 /var/log/pacct <item> 재부팅. 이제 변경된 내용이 적용되도록 시스템을 다시 부팅한다. </enum> </p> <sect>여러가지 프로세스 통계 명령들<p> <descrip> <tag/ac/ ac는 현재의 /var/log/wtmp 파일에 들어있는 로그인 및 로그아웃 기록에 근거하여 사용자들의 접속시간에 대한 통계를 출력한다. 하루 단위의 통계(-d 옵션)나, 사용자별 통계(-p 옵션)를 출력할 수도 있다. <tag/accton/ accton은 프로세스 통계를 켜고 끄기 위해 사용된다. 보통 시스템이 부팅될 때나 셧다운될 때, 시스템의 init 스크립트에 의해 수행된다. <tag/last/ last는 /var/log/wtmp 파일을 읽어서 사용자들의 접속시간에 대한 정보를 출력한다. <tag/sa/ sa는 통계 기록 파일인 /var/account/pacct(역자주:/var/log/pacct일 듯)에 적힌 통계 정보들, 즉 이전에 수행된 명령들, 소프트웨어의 입출력 수행시간, CPU 시간 등을 요약한다. <tag/lastcomm/ lastcomm은 /var/account/pacct에 기록된 모든 명령 내역에 대한 정보를 출력한다. </descrip> </p> <sect>번역자의 추가 사항<p> 번역자가 쓰고 있는 레드햇 배포판 5.2의 경우, 프로세스 통계 관련 명령은 psacct라는 패키지에 들어있다. 번역자의 시스템에 설치된 내역은 다음과 같다. <code> [<url url="maelto: mpark@mulli mpark" name="mpark@mulli mpark" >]$ rpm -qil psacct Name : psacct Distribution: Manhattan Version : 6.3 Vendor: Red Hat Software Release : 5 Build Date: Mon 17 Aug 1998 04:34:07 AM KST Install date: Sun 27 Dec 1998 08:16:39 AM KST Build Host: porky.redhat.com Group : Utilities/System Source RPM: psacct-6.3-5.src.rpm Size : 82423 License: GPL Packager : Red Hat Software <<url url="maelto: bugs@redhat.com" name=" bugs@redhat.com" >> Summary : Process accounting tools Description : The tools necessary for accounting the activities of processes are included here. /sbin/accton /usr/bin/ac /usr/bin/lastcomm /usr/info/accounting.info.gz /usr/man/man1/ac.1 /usr/man/man1/lastcomm.1 /usr/man/man8/accton.8 /usr/man/man8/sa.8 /usr/sbin/accton /usr/sbin/dump-acct /usr/sbin/dump-utmp /usr/sbin/sa /var/log/pacct /var/log/savacct /var/log/usracct </code> 이렇게 프로세스 통계를 pacct 파일에 저장하기 시작하면, 이 파일은 명령어 사용빈도에 비례해서 금방 커지게 된다. 따라서 logrotate와 cron을 이용해서 관리해야 한다. cron은 백업과 같이 주기적으로 실행하는 명령들을 자동으로 처리하도록 해주는 도구로, 설정 내용은 레드햇의 경우 /etc/crontab에 있다. logrotate는 log 파일들을 주기적으로 관리하는 도구다. 지정된 주기에 맞춰서 각각의 log 파일들의 이름을 바꾸거나, 압축하거나 삭제한다. 보통 /etc/cron.daily에 logrotate라는 스크립트를 두어 /usr/sbin/logrotate를 /etc/logrotate.conf라는 설정에 맞춰 매일 실행하게 되어 있다. 따라서 pacct를 관리하려면 /etc/logrotate.conf에 있는 다른 log에 대한 설정을 참고하여 적당히 /var/log/pacct에 대한 항목을 logrotate.conf에 추가하면 된다. </p> </article>