[DEC] Administering Tru64 UNIX
<Administering Tru64 UNIX>
# UNIX Kernel file
/vmunix, /genvmunix (기본적인 kernel file)
# password 제한사항
5~8자 이어야 하고, 전부 소문자는 안된다.
# bin, sbin directory
bin : 시스템 관리에 관계되는 명령들
sbin : 일반 사용자도 사용 가능한 일반적 명령
# System startup
① 커널이 메모리로 복사되고 초기화된다.
② 커널이 init 프로세스를 생성한다. (init 프로세스는 모든 user shell의 조상이다.)
③ /sbin/init 은 /etc/inittab 파일에 명시된 터미널에 대한 프로세스를 실행
④ /usr/sbin/getty 를 실행시켜 터미널에 ” login : ” 프롬프트 출력
(사용자가 입력한 username을 /bin/login 프로세스에 전달)
⑤ /bin/login 은 터미널에 ” password : ” 프롬프트 출력.
(사용자가 입력한 패스워드가 일치하는지 확인후 맞다면 /etc/passwd에 명시된 shell 호출)
⑥ sh, ksh, csh 실행
# kernel에서 init 프로세스를 생성한 후 fork()를 호출하여 child 프로세스가 실행될 공간을 확보하고
exec()로 수행하고 exit()로 종료하게 된다.
# /var/adm/sialog
su를 이용한 root login은 /var/adm/sialog(600 Permission 부여)에 기록된다.
SIA(Security Integration Architecture)
# 터미널을 통해 직접 root로 로그인 하는 것은 /etc/securettys 를 편집함으로써 가능하다.
– /etc/securettys
———————-
/dev/console
local:0
:0
ptys ( <= 추가! – CLI(Command Line Interface)로의 접속 허용 )
———————-
– CDE(Common Desktop Enviroment)로의 root 접속을 허용하려면
” x.x.x.x:0 ” 를 추가시켜주면 된다.
# Alpha Server 모델명
DS10, DS20, ES40, ES45, GS160, GS320
맨 앞은 D, E, G 는 시스템의 크기를 가리키며, 첫 숫자는 CPU 최대 탑재 갯수를 가리킨다.
# OS Version 확인
# sizer -v
# 새로 추가된 SCSI 장비를 scan
# hwmgr -scan scsi
==========================================================
<Updating System Firmware>
# Console subsystem
– SRM ( Systems Reference Manual ) : Tru64, OpenVMS 지원, CLI 지원
– AlphaBIOS : WindowNT 지원
# Systems Reference Manual(SRM)
– prompt는 >>> 이다. console command상에서는 대소문자 구분안함.
– password 설정시 >>> set password , >>> init
– passwrod 해제시 >>> clear password ( password가 15~30자로 너무 길기때문에 비추천 )
– console 변수 보기 : >>> show console변수명
– console 변수 설정 : >>> set console변수명 변수값
ex) >>> set bootdef_dev dka100
ex) >>> show device
dka0.0.0.2000.0 DKA0 RZ28M 1004
dka100.1.0.2000.0 DKA100 RZ28 0557
dka400.4.0.2000.0 DKA400 RRD46 0557 ( RRD가 CD-ROM을 가리킨다.)
…
dk : Drive ID (dr -RAID device, dv -Floppy, er -Ethernet(EISA), ew -Ethernet(PCI),
pk -SCSI port, dk – SCSI disk, mk -SCSI tape)
a : Adapter ID
400 : SCSI ID (x100 – 100 곱한값)
4 : Target ID
0 : Channel Number (for multichannel devices)
2000 : Bus/Slot Number
0 : Host Number
ex)
>>> set boot_osflags a
>>> show boot*
boot_dev dka0.0.0.7.1
boot_file vmunix ( 아무것도 없을시 기본으로 vmunix로 부팅 )
boot_osflags A ( all – multi user mode, S – single user mode )
…
ex) >>> boot -protocol bootp ewa0 ( remote install시 활용 )
ex) >>> boot -fl s dka0 ( dka0 device로 부팅, single-user mode )
ex) >>> boot -fi genvmunix -fl s dka100 ( dka100으로 부팅, genvmunix로 부팅, single-user mode)
– 현재 Firmware 버전정보 보기
>>> show version
>>> show pal ( PALcode 보여주기 )
( 다른 Alpha processor간에서 동일한 OS 운영이 가능하도록 하고,
다른 OS간에서 Appha processor가 사용 가능할 수 있도록 PAL code를 사용한다. )
– OS running 중에 확인하려면 convar 명령어를 이용할 수 있다.
ex) # consvar -g version ( -g 옵션은 get, -l 옵션은 list, -s 옵션은 set 을 뜻한다. )
– OS install 시작
>>> show device ( CD-ROM 확인 ) => insert CD => >>> boot dka500 ( CD-ROM device )
– Alpha Server Firmware Update ( 먼저 위와같이 CD-ROM device를 확인하고 CD를 넣는다. )
>>> b dka400 ( Boot the CD-ROM )
UPD> update => UPD> verify => UPD> exit
==========================================================
<Installing the System>
# 참고사항
– root partition은 300MB 이상, File System은 AdvFS 권장
– swap1 partition은 보통 phsical memory의 2~3배정도로 한다. ( stand alone : 2배, cluster : 3배 )
– NTP(Network Time Protocol) 설정 : cluster 구성시 서버간 시간이 일치하여야 하므로
한 서버를 NTP 서버로 지정하여 시간을 동기화시킨다.
– NFS(Network File System) : NFS 서버의 디렉토리를 다른 시스템에서 mount 가능하도록 한다.
– Network 구성 확인
① Default Gateway 확인 : # ping Gateway_IP
② DNS 확인 : # ping DNS_IP
③ external site : # ping yahoo.com
– 장애시
① Network 이상 : # ping 자신의IP
② TCP/IP protocol stack 이상 : # ping 127.0.0.1
==========================================================
<Performing System Startup and Shutdown>
# Boot process
1) 커널을 메모리로 Load
2) 커널을 초기화하고 메모리 관리를 가능하게 한다.
3) 하드웨어 설정을 검사한다.
4) 두개의 프로세스를 만든다 : kernel idle ( process 0 ), init ( process 1 )
5) 관리자 작업을 하기 위해 single-user mode로 booting한다.
6) 초기화 script file을 실행한다.
7) multi-user 운영을 시작한다.
# Run Levels
1) Run level
– 0 : Halt state
– 1, S, s : Single-user mode
– 2 : Multi-user mode with no network
– 3 : Multi-user mode with network service
2) init 명령을 통해 run level을 바꾼다. ( ex) # init 2 , # init s
3) init 명령은 수행간에 /etc/inittab 에 명시된 명령을 실행한다.
# Halt Mode, Single-User Mode, Multi-User Mode
1) Halt Mode -> Single-User Mode : >>> boot -fl s
2) Single-User Mode -> Halt Mode : # halt , # fasthalt
3) Single-User Mode -> Halt Mode -> Multi-User Mode : # reboot , # fastboot
4) Single-User Mode -> Multi-User Mode : # init 3
5) Halt Mode -> Multi-User Mode : >>> boot
6) Multi-User Mode -> Single-User Mode -> Halt-Mode : # shutdown -h , # init 0
7) Multi-User Mode -> Single-User -> Halt-Mode -> Multi-User Mode : # shutdown -r , reboot
8) Multi-User Mode -> Single-User Mode : # shutdown , # init s
9) Multi-User Mode -> Halt-Mode : # shutdown -h now
# shutdown
– # shutdown -h ( Halt-Mode로 shutdown )
– # shutdown -k ( 실제로 shutdown되지 않고 message만 보냄 )
– # shutdown -r ( reboot )
– # shutdown ( Single-User Mode로 shutdown )
# root password recovery
① Power reset ② >>> boot -fl s
③ # mount -u / ④ # ed /etc/passwd ( root:—–:… => “—–” 부분을 지움 )
⑤ # sync ( 2~3번 수행 ) ⑥ # init 3
① Power reset ② >>> boot -fl s
③ # bcheckrc ( => /etc/fstab ) ④ # passwd
⑤ # sync ( 메모리에 있는 데이터를 안전하게 disk로 옮김 ) ⑥ # init 3
# /etc/inittab
1) 구성예제 ( inittab 파일 구조 => ID:run-levels:action:process )
is:3:initdefault: ( 초기 run-leves이 3으로 지정되어 있다. )
ss:Ss:wait:/sbin/rc0 shutdown < /dev/console > /dev/console 2>&1
s0:0:wait:/sbin/rc0 off < /dev/console > /dev/console 2>&1
fs:23:wait:/sbin/bcheckrc < /dev/console > /dev/console 2>&1
esm_init:23:wait:/sbin/init.d/esm init </dev/null >/dev/null 2>&1
esmd:23:respawn:/usr/sbin/esmd </dev/null >/dev/null 2>&1
kls:Ss:sysinit:/sbin/kloadsrv < /dev/console > /dev/console 2>&1
hsd:Ss:sysinit:/sbin/hotswapd < /dev/console > /dev/console 2>&1
sysconfig:23:wait:/sbin/init.d/autosysconfig start < /dev/console > /dev/console 2>&1
update:23:wait:/sbin/update > /dev/console 2>&1
……
– 초기 run-level이 3이므로 초기설정 줄 이하에서 run-level에 “3”이 포함된 행을 실행한다.
– /sbin/rc2 , rc3 등은 run-level에 따라 실행되는 program들을 제어하는 script이다.
– /sbin/rc2.d, rc3.d 등은 실행할 프로그램들을 포함한 directory이다.
2) rc script 예제 ( 일부분 발췌 )
elif [ $7 = “2” ]; then
echo “Changing to system level 2.”
if [ -d /sbin/rc2.d ]; then ( => 디렉토리가 맞다면 )
for f in /sbin/rc2.d/K* ( => “K”로 시작되는 것들을 f 에 넣고 )
do
if [ -s $f ]; then ( => $f 가 존재한다면 )
if [ -x $f ]; then ( => $f 가 실행 가능하다면 )
$f stop ( => stop 시킨다. “K”이기 때문에 )
else
/sbin/sh $f stop
fi
fi
done
fi
fi
3) 초기화파일 실행구조
/etc/inittab 파일에서 지정된 run-level을 찾아 /sbin에서 해당하는 rc script( rc0, rc2 등)를 실행한다.
지정된 run-level의 디렉토리( /sbin/rc2.d , rc3.d 등 )로 찾아가서
파일이름이 “S”로 시작하면 Start, “K”로 시작하면 Kill 시킨다.
rc2.d , rc3.d 등의 디렉토리 내의 파일은 link로서 /sbin/init.d 내의 파일들을 가리키고 있다.
ex) S09syslog -> ../init.d/syslog ( S는 Start, 09는 실행순서, syslog는 init.d 내의 실행파일명을 가리킨다.)
– run-level의 특성상 run-level 0, 1 에서는 모든 파일이 “K”로 시작한다.
run-level 2 에서는 “K”와 “S”가 공존하며, network 관련 서비스들이 “K”로 시작한다.
run-level 3 에서는 모두 “S”로 시작한다.
4) 직접 작성한 program을 booting 시 실행하려면
① # cp myservice /sbin/init.d
② # cd / sbin/rc3.d ( run-level 3에서 실행시 )
③ # ln -s /sbin/init.d/myservice S99myservice
④ # cd /sbin/rc2.d
⑤ # ln -s /sbin/init.d/myservice K99myservice
⑥ # cd /sbin/rc0.d
⑦ # ln -s /sbin/init.d/myservice K99myservice
==========================================================
<Loading and Licensing Software>
# setld command
– # setld -l ( software kit load )
– # setld -i ( display software subset inventory )
– # setld -d ( delete software kit )
– software subset의 설치상태는 /usr/.smdb. 디렉토리 내의 control file에 의해서 결정된다.
.ctrl 파일 : control file이며, subsetname, description, diskspace requirements 를 포함한다.
.inv 파일 : inventory file이며, 경로명, 파일형식, permission, ownership등을 포함한다.
.scp 파일 : install, uninstall시에 실행하는 subset control program or script
.lk 파일 : lock file
# Software install
1) # mount /dev/disk/cdrom0a /mnt
2) # cd /mnt
3) “kit” 이란 diredtory를 찾아 instctrl directory가 있는 상위 디렉토리에서 # install
4) # setld -l 또는 # setld -l /mnt/NetWorker/kit
# Licensing Software
– 기본 license database는 /var/adm/lmf/ldb 에 있다.
– PAK ( Product Authorization Key )
1) lmf command
– # lmf history ( license database의 변경을 모니터링 )
– # lmf list ( 등록된 제품들을 보여준다. )
– # lmf register – < PAK_file ( registering a PAK )
– # lmf load 0 osf-svr ( 0-user(unlimited) – “osf-svr” 라이센스를 load )
==========================================================
<Managing Disks>
# Disk Partitions
|———c———|
|-a-|-b-|—g—|-h-|
|-a-|-b-|-d-|-h-|-f-|
# Partition 정보는 /etc/disktab에 저장되어 있고 disklabel 명령을 통해 검색할 수 있다.
# disklabel command
1) # disklabel -r dsk7 ( dsk7 정보조회 )
2) # disklabel -r dsk7 > label_dsk7 (정보저장)
3) # disklabel -r -R dsk7 label_dsk9 rz28 (정보복구, rz28은 disktype)
4) # disklabel -e -r dsk7 ( vi 에디터를 이용하여 편집후 반영 가능 )
# swap 설정
1) swap 정보보기 : # swapon -s
# Context-Dependent Symbolic Link ( CDSL )
– CDSL은 cluster상에서 file이나 디렉토리를 single name으로 access 가능하도록 한다.
– cluster 시스템이 아닌경우 OS에서 사용한다.
# hwmgr command
1) # hwmgr -view devices ( 시스템상의 모든 device에 대한 정보를 출력 )
# dsfmgr command
1) # dsfmgr -s ( device special file data를 보여준다. )
2) # dsfmgr -v -F ( device special file data를 확인하고 수정한다. )
==========================================================
<Managing AdvFS File System>
# mount command
– usage : mount [options] [device] [mountpoint]
– options
① -a : /etc/fstab에 명시된 모든 file system을 mount
② -t : 지정된 file system으로 mount ex) # mount -a -t ufs
③ -r : read-only로 mount
ex) mount -t advfs domain1#fileset1 /test
# /etc/fstab file
– 시스템이 시작될때 /etc/fstab에 명시된 file system을 모두 mount 한다.
# umount command
– usage : umount [options] [mountpoint]
– options
① -A : 현재 mount된 모든 file system에 대해 unmount를 시도한다.
② -a : /etc/fstab에 명시된 모든 file system을 unmount
③ -t : 지정된 file system type을 unmount
④ -h : 지정된 host에 mount된 모든 file system을 unmount
– file system이 현재 사용중인지 check
ex) # fuser -cv /mnt ( /mnt와 관련된 user )
ex) # fuser -cvk /mnt ( /mnt와 관련된 process를 kill )
# Setting Up an AdvFS
– file domain 생성 ( mkfdmn ) => file set 생성 ( mkfset ) => mount point 생성 ( mkdir ) => mount
1) File Domain
– 생성 : # mkfdmn [-F] [-l log_pages] [-o] [-r] [-V3 | -V4] block_device_name domain_name
① -F : 강제생성
② -l log_pages : file domain의 log page 수 지정
③ -o : 존재하는 file domain 덮어씀
④ -r : root domain으로 지정(root domain은 1 volume만을 가질 수 있다.)
⑤ -V3 | -V4 : file domain의 버전 지정(V4 : Tru64 UNIX 5.1에서 사용)
ex) # mkfdmn -r /dev/disk/dsk1a root_domain ( root domain 생성 )
– 정보보기 : # showfdmn [-k] domain_name
① -k : 기본치인 512 byte block 대신 1K block으로 보여줌
2) Fileset
– 생성 : # mkfset domain_name fileset_name
– 정보보기 : # showfsets [-b | -q] [-k] domain_name [fileset….]
① -b : 부가적인 정보 없이 domain에 속한 fileset의 이름을 보여준다.
② -q : fileset의 quota limit를 보여준다.
③ -k : 1K block 단위로 보여줌
==========================================================
<Managing the User Environment>
# User Accounts
1) /etc/passwd file
– 형식 -> username:password:UID:GID:personal_info:home_directory:login_shell_path
– /etc/passwd 파일은 permission이 644이지만 일반사용자가 세가지 field를 바꿀 수 있다.
① passwd 명령을 이용한 비밀번호 변경
② chfn 명령을 이용한 개인정보 변경
③ chsh 명령을 이용한 login shell 변경
2) suid, sgid, sticky bit
– suid : command 실행간에는 root로 동작하고 끝나면 권한을 반환
– sgid : 실행간 group id를 바꾸어 실행
– sticky bit : memory에 load되어 있다가 다음 실행시 빠르게 실행하게 함.
3) suid
– suid를 이용한 root 권한 얻기 : #cp /bin/ksh /tmp 한 후에 # chmod 4755 /tmp/ksh 하여 suid를
설정하면 다른 사용자로 login한 후 /tmp/ksh를 실행하면 root 권한을 가진것을 알 수 있다.
– suid를 이용한 위험에 대비하기 : 시스템 설치후 suid가 설정된(root 소유의) 파일을 주기적으로 관리
# find / -user root -perm -4000 -exec ls -al {} ; > suid_list.txt ( 최초 목록 생성 )
# find / -user root -perm -4000 -exec ls -al {} ; > suid_0308.txt ( 주기적으로 생성 )
# diff suid_list.txt suid_0308.txt ( 두 파일 비교 )
4) login script
– sh : /etc/profile ( 시스템 전체에 영향을 미치는 login script ) , $HOME/.profile ( 개별 사용자용 )
– ksh : /etc/profile ( 시스템 전체 ) , $HOME/.profile ( 개별 사용자 )
– csh : /etc/csh.login ( 시스템 전체 ), $HOME/.cshrc & $HOME/.login ( 개별 사용자 )
– default login script : /usr/skel 하에 있는 .profile, .cshrc, .login
5) ACL ( Access Control List )
– permission 설정은 user, group, other 의 단위로 조정하도록 되어있으나, ACL을 사용하면
개별 사용자에 대한 권한 설정이 가능하다.
– # sysconfig -q sec ( acl_mode = enable 인지 확인 )
– # setacl -u user:stu1:— /etc/passwd ( acl은 파일의 소유자가 설정한다. )
– # getacl /etc/passwd ( 파일에 대한 acl 현황 확인 )
==========================================================
<Configuring the Kernel>
# Kernel 구성하기
– static configuration : new kernel 생성. doconfig 명령 이용
– dynamic configuration : parameter 변경. sysconfig, sysconfigdb 명령 이용
# Configuring the System Dynamically
– kernel subsystem의 속성이 dynamic 해야 load, unload 가능하다. ( # sysconfig -m 으로 확인 )
1) kernel subsystem 관련 명령
– Loading : # /sbin/sysconfig -c envmon
– Unloading : # /sbin/sysconfig -u envmon
– subsystem list : # sysconfig -m
– status 확인 : # sysconfig -s
– parameter 확인 : # sysconfig -q subsystem_name
– attribute-value 확인(attribute의 type과 range 확인) : # sysconfig -Q subsystem_name
=> 결과중 op=CRQ 라는 field 존재
( C – 최초 booting시 loading. sysconfigdb 명령을 이용하여 변경가능,
R – running중에도 변경 가능. sysconfig -r 명령을 이용하여 변경가능,
Q – query하여 정보를 볼 수 있음. )
– reference page 확인 : # man sys_attrs_subsystemname
– 값 변경 : ex) # sysconfig -r sec acl_mode=enable ( <= “op=R”이 있어야 변경가능 )
– 파일을 이용한 값 변경 => /etc/sysconfigtab 파일에 저장됨
① # sysconfig -q subsystem_name > subsystem_param
② # vi subsystem_param ( => 편집 )
③ # sysconfigdb -a -f subsystem_param subsystem_name ( 새로 만드는경우 )
④ # sysconfigdb -m -f subsystem_param subsystem_name ( 기존에 있는것에 덮어쓰는 경우 )
2) /etc/sysconfigtab file
– /etc/sysconfigtab 파일은 dynamic config가 가능한 subsystem의 attribute 값들이 저장되어 있다.
– /etc/sysconfigtab 파일의 내용은 시스템이 시작될때 메모리의 kernel database로 load 된다.
– subsystem 설정시 kernel의 default 값을 override한다.
( 변경이 불가능한 default 값들을 sysconfigtab 파일을 이용하여 override 할 수 있게 된다. )
3) System Configuration Files
– /usr/sys/conf/HOST_NAME : 시스템 설정 파일. ( HOST_NAME은 해당 호스트명 )
① HOST_NAME 설정파일내의 내용
ident “UH01” ( 일반적인 hostname )
options QUOTA ( quota 설정가능 )
….
– /usr/sys/conf/GENERIC : Alpha 시스템에 대한 template 설정 파일. 모든 옵션을 담고 있다.
– /usr/sys/conf/param.c : system parameter에 대한 default 값을 가지고 있다.
– /usr/sys/conf/ 내의 .product.list , host_name.list , files 는 가급적 수정말것
4) Building a Static Kernel
– # cp /vmunix /vmunix.old
– # shutdown -h now boot generic kernel
– >>> boot -fi “genvmunix” -fl s ( single user mode )
– # /sbin/bcheckrc
– # sizer -n HOST_NAME ( /tmp/HOST_NAME 으로 저장 – 감지된 data를 저장하는 것 )
– # diff /tmp/HOST_NAME /usr/sys/conf/HOST_NAME ( 두 파일을 비교 )
– # vi /usr/sys/conf/HOST_NAME
– # /usr/sbin/doconfig -c HOST_NAME
……
– # cp /usr/sys/HOST_NAME/vmunix /vmunix
– # /usr/sbin/shutdown -r now Boot new kernel
==========================================================
<Installing Patches>
# patch 관련 명령
– # chsum DUV51EAS0004-200000307.tar ( checksum 확인 )
– # dupatch ( patch 유틸리티 실행 )
==========================================================
<Performing Backups>
# Backup command
1) dump / restore
– UFS에서 사용하며, single-user mode에서 사용해야한다.
2) vdump / vrestore
– UFS와 AdvFS에서 사용 가능하며, UFS는 single-user mode에서 행해야 하고
AdvFS는 multi-user mode에서도 가능하다.
– vdump의 default backup device는 tape이다.( /dev/tape/tape0_d1 )
– ex) # vdump -0uf /usr/root_backup -D /etc
(0 : full backup, u : /etc/vdumpdates에 logging, f : backup장소 지정 , D : directory단위로 백업)
– ex) # vrestore -f /usr/root_backup -i ( -f : restore될 파일 위치지정, -i : interactive mode )
3) Networker SingleServer
– # /usr/opt/networker/bin/nwadmin & ( 백업위치 결정 )
– # /usr/opt/networker/bin/nwbackup & ( 백업할 파일선택 )
– # /usr/opt/networker/bin/nwrecover & ( recover할 파일 선택 )
==========================================================
<Monitoring the System>
# ASCII Event Logging
– syslogd 데몬이 기록하는 log이며, system program의 log들을 /etc/syslog.conf에서 지정하는
파일에 기록한다. ( /var/adm/syslog.dated/24-Mar-22:29/daemon.log 와 같이 저장된다. )
# Binary Event Logging
– binlogd 데몬이 기록하는 log이며, kernel내의 Hardware, Software event를 모아
/etc/binlog.conf에서 지정한 파일에 binary 형식으로 저장한다. ( /var/adm/binary.errolg 에 저장 )
– 번역 : ex) uerf -r err | more (hardware, software와 관계된 log)
# Managing Processes
1) ps command
– ex) # ps lax
UID PID PPID CP PRI NI VSZ RSS WCHAN S TTY TIME COMMAND
0 1048576 0 0 38 -6 5.07G 172M * R < ?? 05:26:01 [kernel idle]
0 1048577 1048576 0 44 0 608K 136K pause IL ?? 0:47.25 /sbin/init -sa
0 1052197 1048577 0 44 0 2.84M 256K event I ?? 0:02.50 /usr/sbin/syslogd -e
0 1052201 1048577 0 44 0 3.80M 272K event I ?? 0:14.15 /usr/sbin/binlogd
0 1052730 1048577 0 44 0 2.18M 120K pause I ?? 0:00.00 /usr/sbin/inetd
0 1052753 1048577 0 44 0 4.38M 240K dc6c749c I ?? 0:03.80 /usr/sbin/cron
21 1507752 1048577 0 44 0 1.62G 3.2M event S ?? 0:00.27 ora_dbw0_ORCL
21 1507757 1048577 0 44 0 1.62G 1.5M event I ?? 0:00.21 ora_reco_ORCL
21 1507759 1048577 0 44 0 1.62G 1.5M event S ?? 0:00.29 ora_lgwr_ORCL
21 1507760 1048577 0 44 0 1.62G 2.7M event S ?? 0:00.26 ora_pmon_ORCL
21 1507761 1048577 0 44 0 1.62G 1.7M event I ?? 0:03.24 ora_smon_ORCL
21 1507765 1048577 0 44 0 1.62G 1.4M event I ?? 0:00.11 ora_arc0_ORCL
21 1507768 1048577 0 44 0 1.62G 1.5M event S ?? 0:26.50 ora_ckpt_ORCL
21 1507770 1048577 0 44 0 1.62G 1.3M event S ?? 0:00.10 ora_s000_ORCL
21 1507774 1048577 0 44 0 1.62G 4.0M event I ?? 0:00.14 ora_d000_ORCL
0 1548801 1052731 0 44 0 2.43M 320K event S ?? 0:00.52 telnetd
0 1548805 1548801 0 44 0 2.79M 536K wait S pts/0 0:01.46 -ksh (ksh)
0 1549520 1548805 0 44 0 12.7M 8.0M – R + pts/0 0:00.42 ps lax
– default priority는 44이며, 낮을수록 우선순위가 높다.
– NI field의 값은 default priority 44에서의 증감수치를 나타낸다.
2) nice, renice command
– ex) # nice -n -10 cc go.c & ( cc go.c 작업의 우선순위를 10 높인다. 높이는 것은 root만이 가능 )
– ex) $ nice -n 10 cc go.c & ( 우선순위를 10 낮춤 )
– ex) # renice +10 248 ( 실행중인 PID=248인 프로세스의 우선순위를 10 낮춤 )
3) Stopping a Process
– foreground process를 멈출때는 Ctrl + C, background process를 멈출때는 # kill PID 를 이용한다.
– ex) jobs ( 현재 session의 job을 보여줌 )
– fg 명령은 background, suspended process를 foreground로 전환한다.
– bg 명령은 suspended process를 background로 전환한다.
– foreground를 background로 전환하려면 Ctrl+Z로 정지시킨 후 bg 명령으로 background로 전환한다.
4) 기타 Monitoring 명령
① CPU Monitoring
– ps ( # ps aux, # ps -ef ), uptime ( -m 옵션 사용시 load average가 5sec에서 1이 좋은것이다.) ,
vmstat ( memory free용량이 128이하이면 paging 작업이 일어나고, 74 이하이면 swapping 작업이
일어나며, 10 이하이면 process 생성이 안된다.) ,
kdbx ( # kdbx -k /vmunix /dev/men – cpustat )
② Memory Monitoring
– ps, vmstat, swapon
③ Disk Monitoring
– iostat
④ AdvFS Monitoring
– advfsstat, showfdmn, showfile, showfsets
⑤ UFS Monitoring
– dumpfs
⑥ Network Monitoring
– netstat
==========================================================