[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

==========================================================

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.