<!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 커널에서 시험되었다. -&gt;
역자주: 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 &quot;Process accounting turned on.&quot;
	fi
</verb>
과 같은 스크립트를 넣는다.
<item> 프로세스 통계 파일인 &quot;pacct&quot;를 만든다.
프로세스 통계용 소프트웨어는 수행된 모든 명령들을 디폴트로 /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 &lt;<url url="maelto: bugs@redhat.com" name=" bugs@redhat.com" >&gt;
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>