글쓴이 : howtosolaris (2001년 08월 08일 오후 04:41) 읽은수: 2,868 [ 시스템튜닝 ]
한동훈님의 글입니다.
Process Accounting은 시스템에서 수행된 명령들을 요약하고 기록한다. 시스템
에서 수행된 명령과 그 명령을 내린 사용자, 또는 데몬에 의해 실행된 많은 프
로그램들, 소요된 CPU 시간 등을 기록하고 통계를 낼 수 있다.
프로세스 통계는 모든 프로세스 통계를 /var/adm/pacct에 기록한다. 이것은 모
든 사용자와 데몬에 의해 실행되는 모든 프로세스를 기록한다. 따라서 많은 사
용자가 사용하는 시스템이나 구형의 UNIX 장비에는 많은 부하가 걸리게 되며,
전체적으로 시스템의 성능을 저하시킬 수 있다. 또한 프로세스 통계는 프로세
스에 대한 데이터를 이미지로서 저장하는데, 사용자가 많을수록, 수행되는 프
로세스가 많을수록, 용량은 기하급수적으로 늘어나게 된다. 관리자가 잠시 한
눈을 판 사이에 시스템의 루트 영역이 꽉 차게 되어 사용자가 시스템에 접근
할 수 없게 되는 불상사가 일어날 수 있다. 따라서 관리자는 cron이나 수시로
관리를 해 주어야 한다.
BSD 계열에서는 로그인시에 활성화되지만 System V 계열에서는 초기에 기능이
제거되어 있다.
프로세스 통계는 시스템의 모니터링에 유용한 도구로서 불법적인 침입자가 어
떤 작업을 했는지 알 수 있는 중요한 단서들을 제공한다. 그와 같은 이유로 항
상 활성화 되어 있어야 한다는 관리자도 있으며(또한, 시스템 자원을 사용한
만큼 돈을 지불해야 하는 사용자에게는 지불의 근거이기도 하다), 시스템의 부
하와 루트 영역을 꽉 차게 만들 수 있다는 이유로 필요한 경우를 제외하고는
이 기능을 제거해야 한다고 하는 쪽도 있다.
BSD계열과 System V 계열의 시스템은 다르지만 기본 데이터는 동일하다. 다만
데이터들의 출력 형식이나 명령어들이 약간 차이가 날 수 있다.
프로세스 통계 기능은 시스템 커널에 의해서 제공되며, 시스템 차원(데몬)에서
제어되어야 한다.
Linux에서는 커널 버전 1.3.37이후의 버전에서 지원하며, 1.3.37이전의 버전에
서는 인터넷을 통해 계정 관리 패치 파일을 받아야 한다.
Linux 배포본에 따라 해당 패키지가 없는 경우라면 다음의 주소에서 받을 수
있다.
http://sunsite.unc.edu/pub/Linux/system/admin/quota-acct-modified.tgz
1. 프로세스 통계 파일
프로세스 통계 파일은 adm 계정(/var/adm)에 위치한다.
이 파일의 내용은 BSD 계열이나 System V 계열이나 큰 차이가 없다.
다음은 프로세스 통계에 관한 데이터 목록이다.
- 명령어
- CPU 사용 시간
- 프로세스의 시작 시간
- 프로세스의 사용 시간
- 프로세스의 종료 시간
- 사용자와 그룹 ID
- 메모리 활성화 시간
- TTY 초기화
- 프로세스의 플래그
- 수행을 실패한 프로세스
2. 프로세스 통계 사용하기
SunOS에서는 /usr/lib/acct에서 실행할 수 있다.
/usr/lib/acct/startup /var/adm/pacct
root로만 실행시킬 수 있으며, startup은 기본 파일은 /var/adm/pacct로 지정
된다. 이를 변경하고 싶으면 여러분이 원하는 경로명과 패스명을 지정해 주는
것이 좋다.
Linux에서는 /sbin/acct에서 실행할 수 있다.
/sbin/accton /var/log/pacct
Linux와 SunOS는 파일의 위치가 다를 수 있다. 게다가 Linux는 배포판의 종류
에 따라서 이들 파일의 위치가 다를 수 있다. 때문에 파일의 위치를 알아두거
나 위와 같이 경로와 파일명을 같이 지정해 주는 것이 좋다.
시스템을 shutdown 시킬 때 프로세스 통계 역시 정상적인 방법으로 종료시켜
주는 것이 좋다.
SunOS에서는 시스템의 종료 스크립트에 /usr/lib/acct/shutacct를 추가한다.
shutacct는 /var/adm/wtmp에 레코드를 기록함으로서 정상적으로 프로세스 통계
가 비정상적으로 종료되었는지(kill -9에 의한 종료), 정상적으로 종료되었는
지를 알 수 있다.
그러나 프로세스 통계는 reboot -q와 같이 정상적인 시스템 종료 과정을 거치
지 않고 시스템을 재부팅 시키거나 poweroff로 시스템을 정지시키는 행위는 기
록하지 못한다.(이것은 그 어떤 기록도 남기지 않는다. 때문에 사용자가 시스
템에 침입하여 고의적으로 시스템을 정지 또는 재부팅시켰는지의 여부는 알아
내기 어렵다)
Linux에서는 시스템의 종료 스크립트에 /sbin/accton을 추가한다.
accton은 시스템에 프로세스 통계가 활성화 되어 있을 경우 아무 인자 없이 실
행할 경우 프로세스 통계를 비활성화 시킨다.
3. 통계 정보 이용하기
SunOS에서는 이 프로세스 통계를 이용할 수 있는 상당히 많은 일련의 명령어
와 스크립트를 갖고 있다.
먼저 기하 급수적으로 커지는 파일을 제어하기 위해서
/usr/lib/acct/runacct를 cron에 등록해서 하루에 한 번씩 실행하도록 한다.
runacct는 runacct가 마지막으로 수행된 시간으로부터 지금 수행되는 시간
동안의 모든 로그파일들을 백업하고 통계를 내고, 로그 파일을 초기화 해준다.
이것은 프로세스 통계 파일을 백업하지 않는다. 때문에 적당한 스크립트를
이용한 log-rotate를 함과 동시에 이것을 사용하는 것이 좋다.
runacct에 의해서 작성된 결과들을 보기 좋게 출력해주는 prdaily라는 스크
립트가 있다.
/usr/lib/acct/prdaily mmdd
prdaily라고 입력하면 가장 최근의 로그들을 보여준다. mmdd라는 것은 특정
날자의 프로세스 통계를 볼 때 사용한다.(해당 날자에 runacct가 실행되어야만
하며, 그렇지 않을 경우 prdaily는
해당 일자의 보고서 파일이 없다는 경고를 보여준다)
/usr/lib/acct/prdaily 0816
8월 16 16:28 1999 DAILY REPORT FOR purple 페이지 1
from 월 8월 16 09:31:49 1999
to 월 8월 16 16:18:46 1999
1 runacct
1 acctcon
TOTAL DURATION IS 407 MINUTES
LINE MINUTES PERCENT # SESS # ON # OFF
/dev/pts/6 0 0 0 0 0
/dev/pts/7 0 0 0 0 0
ftp26597 1 0 2 1 0
ftp27552 2 0 2 1 0
pts/1 0 0 0 0 1
pts/2 0 0 0 0 1
pts/5 0 0 0 0 1
pts/6 30 7 5 5 5
pts/7 1 0 1 1 1
pts/4 0 0 0 0 1
TOTALS 33 -- 10 8 10
8월 16 16:28 1999 DAILY USAGE REPORT FOR purple 페이지 1
LOGIN CPU(MINS) KCORE-MINS CONNECT(MINS) DISK # OF # OF # DISK FEE
UID NAME PRIME NPRIME PRIME NPRIME PRIME NPRIME BLOCKS PROCS SESS SAMPLE
0 TOTAL 1 0 59593 0 33 0 0 1781 8 0 0
0 root 0 0 567 0 30 0 0 1597 6 0 0
5 uucp 0 0 15 0 0 0 0 98 1 0 0
105 trax 0 0 0 0 2 0 0 0 1 0 0
700 oracle 1 0 59004 0 0 0 0 73 0 0 0
8월 16 16:18 1999 DAILY COMMAND SUMMARY 페이지 1
TOTAL COMMAND SUMMARY
COMMAND NUMBER TOTAL TOTAL TOTAL MEAN MEAN HOG CHARS BLOCKS
NAME CMDS KCOREMIN CPU-MIN REAL-MIN SIZE-K CPU-MIN FACTOR TRNSFD READ
TOTALS 1781 59651.32 1.17 315.97 50918.78 0.00 0.00 121530952 856
oracle 10 58953.90 0.64 199.35 92743.41 0.06 0.00 15964296 0
proc_his 6 173.97 0.13 0.15 1311.36 0.02 0.90 47779976 12
sh 367 82.82 0.06 33.36 1453.01 0.00 0.00 461811 19
sadc 165 70.26 0.08 11.10 869.18 0.00 0.01 4136304 0
date 333 48.32 0.04 0.04 1300.13 0.00 0.95 54975 1
in.ftpd 2 40.32 0.03 2.37 1439.86 0.01 0.01 29487104 317
sqlplus 6 29.88 0.01 1.23 2676.18 0.00 0.01 369464 1
sar 165 28.44 0.03 11.14 1115.35 0.00 0.00 4204128 26
8월 16 16:18 1999 MONTHLY TOTAL COMMAND SUMMARY 페이지 1
TOTAL COMMAND SUMMARY
COMMAND NUMBER TOTAL TOTAL TOTAL MEAN MEAN HOG CHARS BLOCKS
NAME CMDS KCOREMIN CPU-MIN REAL-MIN SIZE-K CPU-MIN FACTOR TRNSFD READ
TOTALS 1781 59651.32 1.17 315.97 50918.78 0.00 0.00 121530952 856
oracle 10 58953.90 0.64 199.35 92743.41 0.06 0.00 15964296 0
proc_his 6 173.97 0.13 0.15 1311.36 0.02 0.90 47779976 12
sh 367 82.82 0.06 33.36 1453.01 0.00 0.00 461811 19
sadc 165 70.26 0.08 11.10 869.18 0.00 0.01 4136304 0
date 333 48.32 0.04 0.04 1300.13 0.00 0.95 54975 1
in.ftpd 2 40.32 0.03 2.37 1439.86 0.01 0.01 29487104 317
sqlplus 6 29.88 0.01 1.23 2676.18 0.00 0.01 369464 1
sar 165 28.44 0.03 11.14 1115.35 0.00 0.00 4204128 26
proc_day 4 19.88 0.02 0.02 1282.67 0.00 0.90 5834702 4
8월 16 16:20 1999 LAST LOGIN 페이지 1
00-00-00 adm 00-00-00 noaccess 00-00-00 sys
00-00-00 bin 00-00-00 nobody 00-00-00 uucp
00-00-00 daemon 00-00-00 nobody4 99-08-09 oracle
00-00-00 listen 00-00-00 nuucp 99-08-16 traxacun
00-00-00 lp 00-00-00 rose 99-08-16 purple
00-00-00 inyashio 00-00-00 smtp 99-08-16 root
이와 같은 출력 파일을 볼 수 있다. 각 터미널들의 사용된 시간, 각 계정들의
각종 작업 시간, 명령어들의 일일 통계, 월간 통계, 최종 로그일도 알 수 있
다.
이와 같은 통계들을 통해서 해당 시스템이 파일 작업에 비중을 두는지, 프로세
스 작업에 비중을 두는지를 파악할 수 있고, 이를 토대로 시스템이 좀 더 효율
적으로 운영될 수 있도록 할 수 있다.
사실, startup과 shutacct는 turnacct를 이용하는 스크립트이다. 이 스크립트
들은 프로세스 통계에 대한 임시 파일들의 삭제와 실행 파일 로긴을
/var/adm/wtmp에 남기는 역할을 한다.
각각의 스크립트는 /var/adm/wtmp에 'acctg on'과 'acctg off'라는 로그 기록
을 남기도록 한다.
turnacct는 각각 on, off, switch라는 키워드를 갖는다. 'turnacct on'은 프로
세스 통계를 활성화시키며, 'turnacct off'는 프로세스 통계를 비활성화시킨
다. 'trunacct switch'는 각각을 바꾸는 역할을 수행한다.
turnacct또한 스크립트이다. nulladm 명령을 이용해 /var/adm/pacct 파일을 0
바이트로 초기화시키며, accton 명령을 이용해 프로세스 통계를 활성화시킨다.
accton 명령은 프로세스 통계에 대해서 스위치로 작동한다. 활성화 되어있을
때 실행하면 기능을 제거하며, 기능이 제거되어 있을 때는 기능을 활성화시킨
다.
startup 스크립트의 내용은 다음과 같다.
turnacct on
rm -f /var/adm/acct/sum/wtmp*
rm -f /var/adm/acct/sum/pacct*
rm -f /var/adm/acct/nite/lock*
프로세스 통계 기능을 활성화시키고, 이전의 통계 파일들을 삭제하는 역할을
한다.
turnacct는 통계 파일을 lotate시키고 새로운 통계 파일을 생성한다.
case "$1" in
on)
if test ! -r pacct
then
cat /dev/null > pacct
fi
accton pacct
;;
off)
accton
프로세스 통계 파일이 존재하지 않으면 0 바이트의 통계 파일을 생성하고, 이
미 통계 파일이 있는 경우에는 프로세스 통계 기능을 활성화시킨다.
shutacct 스크립트는 프로세스 통계 기능을 비활성화시키는 단순한 역할만을
한다.
Linux에서는 위와 같은 일련의 과정들이 생략되고, 단순화 되어 있다. 프로세
스 통계 기능의 활성화와 비활성화는 accton 명령에 의해서만 수행된다.(그 외
의 스크립트는 존재하지 않는다)
Linux에는 prdaily와 같이 정보를 한 눈에 보여주는 멋진 스크립트는 없다. 그
렇지만 통계를 요약해서 보여주는 훌륭한 프로그램이 있다. sa는 Linux에서 누
적된 프로세스 통계를 요약하여 보여준다.
%sa -a
77 1.02re 0.06cp 0avio 350k
3 0.03re 0.03cp 0avio 287k modprobe
4 0.01re 0.01cp 0avio 513k troff
6 0.23re 0.00cp 0avio 321k man
4 0.02re 0.00cp 0avio 374k info
6 0.22re 0.00cp 0avio 355k less
4 0.01re 0.00cp 0avio 381k grotty
7 0.23re 0.00cp 0avio 413k sh
화면에 나타나는 데이터 목록은 다음과 같다.
- cpu : cpu 시간으로 시스템과 사용할 때간의 합
- re : cpu시간에 대한 실시간(real time)
- k : core 사용에 대한 평균 cpu 시간
- avio : 매 실행시간에 대한 평균 입출력(I/O) 횟수
- tio : 입출력(I/O) 횟수에 대한 총계
- u : cpu 시간으로 환산한 사용자 cpu 시간
- s : cpu 시간으로 환산한 시스템 시간
프로세스 통계가 활성화 되어 있을 때 여러분이 사용할 수 있는 멋진 명령어는
바로 lastcomm이다. 프로세스 통계 기능이 제거 되어 있으면, /var/adm/pacct
파일이 없다는 에러만 출력한다.
sa는 여러분에게 다양한 정보를 제공한다. 자세한 것은 매뉴얼 페이지를 참조
하라.
SunOS에는 sa1, sa2, sadc라는 system activity report 패키지가 있다. 이것은
시스템에 대한 또 다른 정보를 제공하지만 Linux의 sa와는 별개의 것이며, 이
에 대한 것은 뒤에서 설명할 것이다.
%lastcomm
sh S uucp __ 0.01 secs Mon Aug 16 17:11
uudemon. uucp __ 0.01 secs Mon Aug 16 17:11
uuxqt uucp __ 0.01 secs Mon Aug 16 17:11
uusched uucp __ 0.00 secs Mon Aug 16 17:11
vi root pts/4 0.02 secs Mon Aug 16 17:10
sh S root __ 0.01 secs Mon Aug 16 17:10
sh F root __ 0.00 secs Mon Aug 16 17:10
sar root __ 0.02 secs Mon Aug 16 17:10
sadc root __ 0.02 secs Mon Aug 16 17:10
date root wscons 0.01 secs Mon Aug 16 17:10
lastcomm에 의해 실행된 명령어들과 사용자, 터미널, 명령어의 실행시간등을
알 수 있다.
uucp는 데몬에 의해서 실행된 것이다. 데몬에 의해서 실행되는 경우나 백그라
운드로 실행되는 작업의 경우 터미널 대신에 '--'로 나타난다. pts/4는 해당
터미널의 번호이다. wscons는 UNIX 머신의 콘솔 앞에서 직접 작업했다는 것을
의미한다.
시스템의 사용 통계를 위한 sar나 sadc와 같은 명령어들은 root의 소유권한을
갖고 있고, cron에 의해서 실행된 백그라운드 명령들이다. 이와 같은 명령들은
root로 직접 실행한 명령어들이 아니다.
S와 F 두 플래그가 있다. 두 플래그의 의미는 다음과 같다.
- S : Set UID 프로그램의 프로세스의 수행
- F : 복제 프로세스의 수행
특정 사용자에 의해 수행된 명령어에 관심이 있거나 특정 터미널만을 보고자
할 경우에는 다음과 같이 한다.
%lastcomm root
%lastcomm pts/4
%lastcomm root pts/6
%lastcomm date
첫 번째는 root 사용자에 의해 수행된 명령어들을 보여주며, 두 번째는 4번 터
미널에서 수행된 명령어들에 대해서, 세 번째는 root 사용자가 6번 터미널에서
수행한 명령어들을 보여준다. 마지막은 'date'라는 명령어가 실행된 모든 사용
자와 터미널을 보여준다.
이것은 현재 누적된 프로세스 통계 파일에 의존한다.
acctcom - 각종 명령어 통계
한동훈님의 글입니다.
Process Accounting은 시스템에서 수행된 명령들을 요약하고 기록한다. 시스템
에서 수행된 명령과 그 명령을 내린 사용자, 또는 데몬에 의해 실행된 많은 프
로그램들, 소요된 CPU 시간 등을 기록하고 통계를 낼 수 있다.
프로세스 통계는 모든 프로세스 통계를 /var/adm/pacct에 기록한다. 이것은 모
든 사용자와 데몬에 의해 실행되는 모든 프로세스를 기록한다. 따라서 많은 사
용자가 사용하는 시스템이나 구형의 UNIX 장비에는 많은 부하가 걸리게 되며,
전체적으로 시스템의 성능을 저하시킬 수 있다. 또한 프로세스 통계는 프로세
스에 대한 데이터를 이미지로서 저장하는데, 사용자가 많을수록, 수행되는 프
로세스가 많을수록, 용량은 기하급수적으로 늘어나게 된다. 관리자가 잠시 한
눈을 판 사이에 시스템의 루트 영역이 꽉 차게 되어 사용자가 시스템에 접근
할 수 없게 되는 불상사가 일어날 수 있다. 따라서 관리자는 cron이나 수시로
관리를 해 주어야 한다.
BSD 계열에서는 로그인시에 활성화되지만 System V 계열에서는 초기에 기능이
제거되어 있다.
프로세스 통계는 시스템의 모니터링에 유용한 도구로서 불법적인 침입자가 어
떤 작업을 했는지 알 수 있는 중요한 단서들을 제공한다. 그와 같은 이유로 항
상 활성화 되어 있어야 한다는 관리자도 있으며(또한, 시스템 자원을 사용한
만큼 돈을 지불해야 하는 사용자에게는 지불의 근거이기도 하다), 시스템의 부
하와 루트 영역을 꽉 차게 만들 수 있다는 이유로 필요한 경우를 제외하고는
이 기능을 제거해야 한다고 하는 쪽도 있다.
BSD계열과 System V 계열의 시스템은 다르지만 기본 데이터는 동일하다. 다만
데이터들의 출력 형식이나 명령어들이 약간 차이가 날 수 있다.
프로세스 통계 기능은 시스템 커널에 의해서 제공되며, 시스템 차원(데몬)에서
제어되어야 한다.
Linux에서는 커널 버전 1.3.37이후의 버전에서 지원하며, 1.3.37이전의 버전에
서는 인터넷을 통해 계정 관리 패치 파일을 받아야 한다.
Linux 배포본에 따라 해당 패키지가 없는 경우라면 다음의 주소에서 받을 수
있다.
http://sunsite.unc.edu/pub/Linux/system/admin/quota-acct-modified.tgz
1. 프로세스 통계 파일
프로세스 통계 파일은 adm 계정(/var/adm)에 위치한다.
이 파일의 내용은 BSD 계열이나 System V 계열이나 큰 차이가 없다.
다음은 프로세스 통계에 관한 데이터 목록이다.
- 명령어
- CPU 사용 시간
- 프로세스의 시작 시간
- 프로세스의 사용 시간
- 프로세스의 종료 시간
- 사용자와 그룹 ID
- 메모리 활성화 시간
- TTY 초기화
- 프로세스의 플래그
- 수행을 실패한 프로세스
2. 프로세스 통계 사용하기
SunOS에서는 /usr/lib/acct에서 실행할 수 있다.
/usr/lib/acct/startup /var/adm/pacct
root로만 실행시킬 수 있으며, startup은 기본 파일은 /var/adm/pacct로 지정
된다. 이를 변경하고 싶으면 여러분이 원하는 경로명과 패스명을 지정해 주는
것이 좋다.
Linux에서는 /sbin/acct에서 실행할 수 있다.
/sbin/accton /var/log/pacct
Linux와 SunOS는 파일의 위치가 다를 수 있다. 게다가 Linux는 배포판의 종류
에 따라서 이들 파일의 위치가 다를 수 있다. 때문에 파일의 위치를 알아두거
나 위와 같이 경로와 파일명을 같이 지정해 주는 것이 좋다.
시스템을 shutdown 시킬 때 프로세스 통계 역시 정상적인 방법으로 종료시켜
주는 것이 좋다.
SunOS에서는 시스템의 종료 스크립트에 /usr/lib/acct/shutacct를 추가한다.
shutacct는 /var/adm/wtmp에 레코드를 기록함으로서 정상적으로 프로세스 통계
가 비정상적으로 종료되었는지(kill -9에 의한 종료), 정상적으로 종료되었는
지를 알 수 있다.
그러나 프로세스 통계는 reboot -q와 같이 정상적인 시스템 종료 과정을 거치
지 않고 시스템을 재부팅 시키거나 poweroff로 시스템을 정지시키는 행위는 기
록하지 못한다.(이것은 그 어떤 기록도 남기지 않는다. 때문에 사용자가 시스
템에 침입하여 고의적으로 시스템을 정지 또는 재부팅시켰는지의 여부는 알아
내기 어렵다)
Linux에서는 시스템의 종료 스크립트에 /sbin/accton을 추가한다.
accton은 시스템에 프로세스 통계가 활성화 되어 있을 경우 아무 인자 없이 실
행할 경우 프로세스 통계를 비활성화 시킨다.
3. 통계 정보 이용하기
SunOS에서는 이 프로세스 통계를 이용할 수 있는 상당히 많은 일련의 명령어
와 스크립트를 갖고 있다.
먼저 기하 급수적으로 커지는 파일을 제어하기 위해서
/usr/lib/acct/runacct를 cron에 등록해서 하루에 한 번씩 실행하도록 한다.
runacct는 runacct가 마지막으로 수행된 시간으로부터 지금 수행되는 시간
동안의 모든 로그파일들을 백업하고 통계를 내고, 로그 파일을 초기화 해준다.
이것은 프로세스 통계 파일을 백업하지 않는다. 때문에 적당한 스크립트를
이용한 log-rotate를 함과 동시에 이것을 사용하는 것이 좋다.
runacct에 의해서 작성된 결과들을 보기 좋게 출력해주는 prdaily라는 스크
립트가 있다.
/usr/lib/acct/prdaily mmdd
prdaily라고 입력하면 가장 최근의 로그들을 보여준다. mmdd라는 것은 특정
날자의 프로세스 통계를 볼 때 사용한다.(해당 날자에 runacct가 실행되어야만
하며, 그렇지 않을 경우 prdaily는
해당 일자의 보고서 파일이 없다는 경고를 보여준다)
/usr/lib/acct/prdaily 0816
8월 16 16:28 1999 DAILY REPORT FOR purple 페이지 1
from 월 8월 16 09:31:49 1999
to 월 8월 16 16:18:46 1999
1 runacct
1 acctcon
TOTAL DURATION IS 407 MINUTES
LINE MINUTES PERCENT # SESS # ON # OFF
/dev/pts/6 0 0 0 0 0
/dev/pts/7 0 0 0 0 0
ftp26597 1 0 2 1 0
ftp27552 2 0 2 1 0
pts/1 0 0 0 0 1
pts/2 0 0 0 0 1
pts/5 0 0 0 0 1
pts/6 30 7 5 5 5
pts/7 1 0 1 1 1
pts/4 0 0 0 0 1
TOTALS 33 -- 10 8 10
8월 16 16:28 1999 DAILY USAGE REPORT FOR purple 페이지 1
LOGIN CPU(MINS) KCORE-MINS CONNECT(MINS) DISK # OF # OF # DISK FEE
UID NAME PRIME NPRIME PRIME NPRIME PRIME NPRIME BLOCKS PROCS SESS SAMPLE
0 TOTAL 1 0 59593 0 33 0 0 1781 8 0 0
0 root 0 0 567 0 30 0 0 1597 6 0 0
5 uucp 0 0 15 0 0 0 0 98 1 0 0
105 trax 0 0 0 0 2 0 0 0 1 0 0
700 oracle 1 0 59004 0 0 0 0 73 0 0 0
8월 16 16:18 1999 DAILY COMMAND SUMMARY 페이지 1
TOTAL COMMAND SUMMARY
COMMAND NUMBER TOTAL TOTAL TOTAL MEAN MEAN HOG CHARS BLOCKS
NAME CMDS KCOREMIN CPU-MIN REAL-MIN SIZE-K CPU-MIN FACTOR TRNSFD READ
TOTALS 1781 59651.32 1.17 315.97 50918.78 0.00 0.00 121530952 856
oracle 10 58953.90 0.64 199.35 92743.41 0.06 0.00 15964296 0
proc_his 6 173.97 0.13 0.15 1311.36 0.02 0.90 47779976 12
sh 367 82.82 0.06 33.36 1453.01 0.00 0.00 461811 19
sadc 165 70.26 0.08 11.10 869.18 0.00 0.01 4136304 0
date 333 48.32 0.04 0.04 1300.13 0.00 0.95 54975 1
in.ftpd 2 40.32 0.03 2.37 1439.86 0.01 0.01 29487104 317
sqlplus 6 29.88 0.01 1.23 2676.18 0.00 0.01 369464 1
sar 165 28.44 0.03 11.14 1115.35 0.00 0.00 4204128 26
8월 16 16:18 1999 MONTHLY TOTAL COMMAND SUMMARY 페이지 1
TOTAL COMMAND SUMMARY
COMMAND NUMBER TOTAL TOTAL TOTAL MEAN MEAN HOG CHARS BLOCKS
NAME CMDS KCOREMIN CPU-MIN REAL-MIN SIZE-K CPU-MIN FACTOR TRNSFD READ
TOTALS 1781 59651.32 1.17 315.97 50918.78 0.00 0.00 121530952 856
oracle 10 58953.90 0.64 199.35 92743.41 0.06 0.00 15964296 0
proc_his 6 173.97 0.13 0.15 1311.36 0.02 0.90 47779976 12
sh 367 82.82 0.06 33.36 1453.01 0.00 0.00 461811 19
sadc 165 70.26 0.08 11.10 869.18 0.00 0.01 4136304 0
date 333 48.32 0.04 0.04 1300.13 0.00 0.95 54975 1
in.ftpd 2 40.32 0.03 2.37 1439.86 0.01 0.01 29487104 317
sqlplus 6 29.88 0.01 1.23 2676.18 0.00 0.01 369464 1
sar 165 28.44 0.03 11.14 1115.35 0.00 0.00 4204128 26
proc_day 4 19.88 0.02 0.02 1282.67 0.00 0.90 5834702 4
8월 16 16:20 1999 LAST LOGIN 페이지 1
00-00-00 adm 00-00-00 noaccess 00-00-00 sys
00-00-00 bin 00-00-00 nobody 00-00-00 uucp
00-00-00 daemon 00-00-00 nobody4 99-08-09 oracle
00-00-00 listen 00-00-00 nuucp 99-08-16 traxacun
00-00-00 lp 00-00-00 rose 99-08-16 purple
00-00-00 inyashio 00-00-00 smtp 99-08-16 root
이와 같은 출력 파일을 볼 수 있다. 각 터미널들의 사용된 시간, 각 계정들의
각종 작업 시간, 명령어들의 일일 통계, 월간 통계, 최종 로그일도 알 수 있
다.
이와 같은 통계들을 통해서 해당 시스템이 파일 작업에 비중을 두는지, 프로세
스 작업에 비중을 두는지를 파악할 수 있고, 이를 토대로 시스템이 좀 더 효율
적으로 운영될 수 있도록 할 수 있다.
사실, startup과 shutacct는 turnacct를 이용하는 스크립트이다. 이 스크립트
들은 프로세스 통계에 대한 임시 파일들의 삭제와 실행 파일 로긴을
/var/adm/wtmp에 남기는 역할을 한다.
각각의 스크립트는 /var/adm/wtmp에 'acctg on'과 'acctg off'라는 로그 기록
을 남기도록 한다.
turnacct는 각각 on, off, switch라는 키워드를 갖는다. 'turnacct on'은 프로
세스 통계를 활성화시키며, 'turnacct off'는 프로세스 통계를 비활성화시킨
다. 'trunacct switch'는 각각을 바꾸는 역할을 수행한다.
turnacct또한 스크립트이다. nulladm 명령을 이용해 /var/adm/pacct 파일을 0
바이트로 초기화시키며, accton 명령을 이용해 프로세스 통계를 활성화시킨다.
accton 명령은 프로세스 통계에 대해서 스위치로 작동한다. 활성화 되어있을
때 실행하면 기능을 제거하며, 기능이 제거되어 있을 때는 기능을 활성화시킨
다.
startup 스크립트의 내용은 다음과 같다.
turnacct on
rm -f /var/adm/acct/sum/wtmp*
rm -f /var/adm/acct/sum/pacct*
rm -f /var/adm/acct/nite/lock*
프로세스 통계 기능을 활성화시키고, 이전의 통계 파일들을 삭제하는 역할을
한다.
turnacct는 통계 파일을 lotate시키고 새로운 통계 파일을 생성한다.
case "$1" in
on)
if test ! -r pacct
then
cat /dev/null > pacct
fi
accton pacct
;;
off)
accton
프로세스 통계 파일이 존재하지 않으면 0 바이트의 통계 파일을 생성하고, 이
미 통계 파일이 있는 경우에는 프로세스 통계 기능을 활성화시킨다.
shutacct 스크립트는 프로세스 통계 기능을 비활성화시키는 단순한 역할만을
한다.
Linux에서는 위와 같은 일련의 과정들이 생략되고, 단순화 되어 있다. 프로세
스 통계 기능의 활성화와 비활성화는 accton 명령에 의해서만 수행된다.(그 외
의 스크립트는 존재하지 않는다)
Linux에는 prdaily와 같이 정보를 한 눈에 보여주는 멋진 스크립트는 없다. 그
렇지만 통계를 요약해서 보여주는 훌륭한 프로그램이 있다. sa는 Linux에서 누
적된 프로세스 통계를 요약하여 보여준다.
%sa -a
77 1.02re 0.06cp 0avio 350k
3 0.03re 0.03cp 0avio 287k modprobe
4 0.01re 0.01cp 0avio 513k troff
6 0.23re 0.00cp 0avio 321k man
4 0.02re 0.00cp 0avio 374k info
6 0.22re 0.00cp 0avio 355k less
4 0.01re 0.00cp 0avio 381k grotty
7 0.23re 0.00cp 0avio 413k sh
화면에 나타나는 데이터 목록은 다음과 같다.
- cpu : cpu 시간으로 시스템과 사용할 때간의 합
- re : cpu시간에 대한 실시간(real time)
- k : core 사용에 대한 평균 cpu 시간
- avio : 매 실행시간에 대한 평균 입출력(I/O) 횟수
- tio : 입출력(I/O) 횟수에 대한 총계
- u : cpu 시간으로 환산한 사용자 cpu 시간
- s : cpu 시간으로 환산한 시스템 시간
프로세스 통계가 활성화 되어 있을 때 여러분이 사용할 수 있는 멋진 명령어는
바로 lastcomm이다. 프로세스 통계 기능이 제거 되어 있으면, /var/adm/pacct
파일이 없다는 에러만 출력한다.
sa는 여러분에게 다양한 정보를 제공한다. 자세한 것은 매뉴얼 페이지를 참조
하라.
SunOS에는 sa1, sa2, sadc라는 system activity report 패키지가 있다. 이것은
시스템에 대한 또 다른 정보를 제공하지만 Linux의 sa와는 별개의 것이며, 이
에 대한 것은 뒤에서 설명할 것이다.
%lastcomm
sh S uucp __ 0.01 secs Mon Aug 16 17:11
uudemon. uucp __ 0.01 secs Mon Aug 16 17:11
uuxqt uucp __ 0.01 secs Mon Aug 16 17:11
uusched uucp __ 0.00 secs Mon Aug 16 17:11
vi root pts/4 0.02 secs Mon Aug 16 17:10
sh S root __ 0.01 secs Mon Aug 16 17:10
sh F root __ 0.00 secs Mon Aug 16 17:10
sar root __ 0.02 secs Mon Aug 16 17:10
sadc root __ 0.02 secs Mon Aug 16 17:10
date root wscons 0.01 secs Mon Aug 16 17:10
lastcomm에 의해 실행된 명령어들과 사용자, 터미널, 명령어의 실행시간등을
알 수 있다.
uucp는 데몬에 의해서 실행된 것이다. 데몬에 의해서 실행되는 경우나 백그라
운드로 실행되는 작업의 경우 터미널 대신에 '--'로 나타난다. pts/4는 해당
터미널의 번호이다. wscons는 UNIX 머신의 콘솔 앞에서 직접 작업했다는 것을
의미한다.
시스템의 사용 통계를 위한 sar나 sadc와 같은 명령어들은 root의 소유권한을
갖고 있고, cron에 의해서 실행된 백그라운드 명령들이다. 이와 같은 명령들은
root로 직접 실행한 명령어들이 아니다.
S와 F 두 플래그가 있다. 두 플래그의 의미는 다음과 같다.
- S : Set UID 프로그램의 프로세스의 수행
- F : 복제 프로세스의 수행
특정 사용자에 의해 수행된 명령어에 관심이 있거나 특정 터미널만을 보고자
할 경우에는 다음과 같이 한다.
%lastcomm root
%lastcomm pts/4
%lastcomm root pts/6
%lastcomm date
첫 번째는 root 사용자에 의해 수행된 명령어들을 보여주며, 두 번째는 4번 터
미널에서 수행된 명령어들에 대해서, 세 번째는 root 사용자가 6번 터미널에서
수행한 명령어들을 보여준다. 마지막은 'date'라는 명령어가 실행된 모든 사용
자와 터미널을 보여준다.
이것은 현재 누적된 프로세스 통계 파일에 의존한다.
acctcom - 각종 명령어 통계