[OS]/Embedded&Linux

SUN 사용설명서

하늘을닮은호수M 2007. 3. 19. 11:20
반응형

SUN 사용 설명서 2005-11-24 22:54


카테고리 : 기본카테고리 http://blog.paran.com/hotpink/7118700
1장. SUN OS 의 이력 및 SUN Product

2장. Command사용법 및 기능설명

2.1 Admin을 위한 일반 명령어

2.2 System Information 확인 명령어

2.3 중요한 시스템 환경 File들(Backup Key Files!)

3장. Quota 설정

4장. SunOS 4.x의 trace, Solaris의 truss

4.1 SunOS 4.x 에 대한 추적(Trace)기능

4.2 Solaris 2.x 에 대한 추적 기능

5장. Accounting & Permission

5.1 User Accounts(command line에서)

5.2 BSD Accounting Utilities

6장. Cron(명령어스케쥴링)

7장. NVRAM(PROM Phase)

7.1 OK mode상에서 banner 및 logo변경

7.2 NVRAM 값 변경

8장. SWAP

9장. MAIL

9.1 일반적 mail 사용법

9.2 메일 서버 센드 메일(Sendmail)

10장. POP Server

11장. DNS(Domain Name Service)

12장. NFS(Network File Service)

12.1 NFS 설정

12.2 일반적인 NFS Error의 유형과 해결 방법

13장. FTP(File Transfer Protocol)

13.1 anonymous FTP install

14장. PPP(Point to Point Protocol)

14.1 Sun-to-PC Dialup PPP(Async) on Solaris 2.x

14.2 적용예제

15장. System Tuning(시스템최적화)

15.1 성능 향상을 위한 일반론

15.2 시스템 성능에 영향을 주는 요소들

15.3 프로그램의 시간 체크하기

15.4 시스템의 성능 측정하기

15.5 현재 CPU 성능 측정

15.6 평균부하

15.7 페이징 알고리듬

15.8 메모리 사용 분석하기

15.9 디스크 I/O 분석하기

15.10 파일시스템 튜닝하기

15.11 무작위 통계 출력하기

15.12 시스템 성능 체크의 단계

15.13 Process 분석

16장. AWK

17장. SED

18장. C-SHELL PROGRAMMING 기법

19장. VI 편집기

20장. System Backup 및 주변장치(Device)

20.1 DAT제어를 위한 mt 명령어

20.2 tar명령어

20.3 cpio명령어

20.4 upsdump명령어

20.5 Remote Backup

20.6 Remote CD-ROM Mount

20.7 DEVICE 관련된 사항

20.8 DISK모델 관련 사항

20.9 Addon DISK

20.10 DEVICE설치

20.11 DISK format Utilities

20.12 SCSI DISK의 RPM 조정

20.13 Floppy DISK 인식

20.14 /(root) File System restore

21장. 시스템 ERROR 및 문제해결(Q&A)

21.1 Emergency Keyboard Commands

21.2 directory write problem

21.3 root(super user) password를 잊어버리거나, 파일시스템 오류시

21.4 File System이 손상된 경우(Boot block복구)

21.5 Inode가 full인 경우 조치

21.6 System Disk move

21.7 Oracle용 DISK Addon

21.8 프린터 관련

21.9 FrameBuffer관련

21.10 Sun H/W 장애(Q&A)

21.11 Application 관련 Error

21.12 MOD에서 media를 인식 못할 때

21.13 rm Command로 지워지지 않는 File 지우는 방법

22장. 네트웍관련 테크닉(Tip)

22.1 Tuning the system for a web server

22.2 Linux Network Setup

22.3 Snoop(Capture and Inspect Network Packets)명령어

22.4 ARP(Address Resolution Protocol)

22.5 Ifconfig(Configure Network Interface Parameters)명령어

22.6 The startup script results in the following

22.7 The route Command

22.8 Router Configuration

22.9 2'nd ethenet설치

22.10 4.1.3 DNS setup for Client

22.11 SLIP

22.12 SUN ATM

22.13 IP Aliasing

22.14 Static-Routing example

22.15 C class netmask방법

22.16 NDD를 이용한 Tuning변수(Solaris 2.x)

22.17 IP forwarding을 disable(Solaris 2.x)

22.18 Routing 환경

22.19 Auto FTP login

23장. 시스템관련 테크닉(&Tip)

23.1 Large dummy file 생성 방법

23.2 DOS file에서 ^M 문자 제거 방법

23.3 2개의 모니터에 Openwindows 올릴때

23.4 rdist사용하여 정해진 시간에 파일 transfer

23.5 Prompt변경(HostName & CurrentPath Display)

23.6 임시 host_name변경

23.7 / file system 100%일 경우 유용한 command

23.8 man page에 관한 몇가지

23.9 Login User중 idle time check하여 자동 kill(Script)

23.10 Login 보안 및 audit 관련 Tip

23.11 시스템에 유저 접근 거부 시킬때

23.12 RAID Level

23.13 System의 재설정(Host_name 및 Network 정보)

23.14 Network상에서 C-compile 하는 방법

23.15 Solstice Compiller Install

23.16 시스템 초기 설치시 참고

23.17 특정유저의 파일실행할 때

23.18 Remote로 Utilitie 실행

24장. NIS(YP)

24.1 Server & Client의 효율적 운용

24.2 Install 및 운용방법

24.3 NIS Master Server 초기화

24.4 NIS Slave Server 초기화

24.5 NIS의 Administration

24.6 NIS 장애 유형


* CDE

* SunNetManager

* SAMBA(PC NFS)

* 시스템보안


1장. SUN OS 이력 및 SUN Product


- OS

SUN OS 4.1.1(OW2.0.1) ??

SUN OS 4.1.2(OW2.0.2) ? BSD계열

SUN OS 4.1.3(OW2.0.3) ?

SUN OS 4.1.4(OW2.0.4) ??

SUN OS 5.1(OW3.0.1) or Solaris 2.1 ??

SUN OS 5.2(OW3.0.2) or Solaris 2.2 ? Unix-V 계열

SUN OS 5.3(OW3.0.3) or Solaris 2.3 ?

SUN OS 5.4(OW3.0.4) or Solaris 2.4 ?

SUN OS 5.5(OW3.0.5) or Solaris 2.5 ?

Solaris 2.5.1 ?

Solaris 2.6 ?

Solaris 7 : full 64bit 운영체제


- System Product

SUN ULTRA 1 <1995,64bit>, Solaris 2.5 : Single CPU

SUN ULTRA 2 <1996,64bit>, Solaris 2.5.1 : Max CPU 2

SUN Ultra 5 : 개인용

SUN Ultra 10 : 개인용desktop, developer

SUN Ultra 60 : developer, desktop or 소규모 그룹서버

SUN Enterprise 250 : 소규모 웍그룹 서버

SUN Enterprise 450 : 중규모 웍그룹 서버

SUN Enterprise 3500 : DB서버,넷서버,중규모

SUN Enterprise 4500 : 확장성 및 고성능이 필요한 site용

SUN Enterprise 5500 : 대규모 site 서버

SUN Enterprise 6500 : “

SUN Enterprise 10000 : 메인프레임(cluster일 경우 슈퍼컴가능)

2장. Command사용법 및 기능설명


2.1 Admin을 위한 일반 명령어


▷ 현재 시스템의 Architecture를 확인

# arch -k

: Display The kernel architecture

▷ Inode 삭제 명령어 clrl

# clrl /dev/dsk/c0t1d0s7 231

: 231 inode를 삭제

▷ Text파일에서 특정 문자 추출해내는 명령 cut

# cut -d":" -f1 /etc/passwd > /tmp/user

: passwd file에서 유저부분만 추출해서 /tmp/user 파일로 저장

# ypcat passwd | cut -d":" -f1 > /tmp/user

▷ Disk 사용량 계산

# du -s . : 현재 및 SUB-dir까지의 전체 Disk사용량 (du:disk use)

-k . : killo byte 단위로 확인

▷ Text file의 비교와 Directory간의 상이한 내용의 비교

# diff /a /mnt : /a, /mnt directory 를 비교

# diff /a /b : /a, /b Text file 의 비교

▷ EEPROM의 내용을 명령행 에서 변경

# /usr/sbin/eeprom : 상태확인

# /usr/sbin/eeprom boot-device=disk3 : 값 변경

▷ File type을 확인 할때

# file /etc/passwd

/etc/passwd: 아스키 텍스트

# file core

core: ELF 32-비트 MSB 코어 파일 SPARC 버전 1, 원인수행 'sleep'

: 이건 core file 이 왜 생성?榮쩝 보고 하고 있다.

▷ File or Directory 을 지울때

# rm file_name ; 단일 파일을 지운다.

# rm -r /dir_name ; 디렉토리까지 전부 삭제한다.

# rm -i file_name ; "-i"옵션은 파일을 지우기 전에 한번 더 확인한다.

# rm 'file name' ; 중간에 공백이 있는 파일 지울때.

▷ File 검색을 위한 명령어

# find ~ -name '*%' -print -exec rm {} ;

: home 디렉토리 '%'로 끝나는 화일 탐색하여 보여주면서 삭제

Option 분류(검색기능이 상당히 많다. man page로 확인)

-atime n ; accessed n days ago

-ctime n ; change n days ago

-mtime n ; midified n days ago

-perm ; 해당 되는 퍼미션 파일 검색

...

▷ Key input 제대로 안될 때 Remote에서 Key mode를 바꾼다.

# kbd_mode -a

▷ Process를 강제 종료 시킬때

# kill pid : 통상 process 종료 시킬때

# kill -9 pid : 강제 종료 시킬때

# kill -HUP pid : process를 hangup

# kill -SEGV pid : process를 강제로 segmentation fault 시킬때

▷ Process관련 명령어

/usr/proc/bin Directory에 다수가 있다.

proc tools -

proc, pflags, pcred, pmap, pldd, psig, pstack, pfiles, pwdx, pstop, prun, pwait,

ptree, ptime

▷ File list를 표시한다.

# ls -al : 모든 file들을 long형태로 자세히 listing

# ls -ald : directory를 확인 할 때

# ls -li : inode number를 보고자 할 때

▷ NIS 의 기동 여부 확인

# nisls -l : 만일 서버가 다운되었다면 아래와 같은 메시지가 뿌려진다.

"NIS+ server unreachable"

▷ 특정 Disk partition 의 자세한 정보 획득

# prtvtoc /dev/rdsk/c0t0d0s0 : volume Table 의 내용 볼 때

위는 c0t0d0s0 slice에 대한 자세한 Information을 보여준다.

▷ 시스템의 상세 Configuration을 확인하는 명령어

# prtconf : System Configuration을 보여준다.

# sysdef : Current system definition을 출력

# /usr/platform/`uname -i`/sbin/prtdiag : H/W 정보 (sol 2.6)

; Display system diagnostic information

; SUN 장비에만 적용되고 Axil등에서는 안됨.

▷ CPU를 Enable 또는 Disable

psrinfo , psradm

# psrinfo [-v] : CPU 정보확인

# psradm -f 2 3 : 2,3번 CPU를 off_line

# psradm -n 2 3 : 2,3번 CPU를 on_line

: 대형 서버 등에서 CPU 수를 제한하여 성능 test할 때 유용하다.

▷ /etc/shadow 파일의 update

# pwconv : /etc/shadow file 생성 및 modify

▷ 실행된 명령어들 Display

lastcomm 설정방법

# touch /var/adm/pacct ; 꼭 이렇게 하지 않아도 되며, 보안유지가 필요한 곳이라면,

다른 DIR에 다른file_name으로 숨겨도 된다.

그러나 볼때는 반드시 /var/adm/pacct 로 copy하여 놓은후 사용

해야 함.

# /usr/lib/acct/accton /var/adm/pacct

# lastcomm

▷ Sytem Reconfiguration BOOT

# reboot -- -r :

▷ rlogin 접속

# rlogin -l hong basic : hong으로 basic시스템에 콘솔 접속

▷ Key-in을 위한 I/O setting

# stty -a : setting된 key 들을 보여준다

# stty erase ?임의의키? : erase 단축기능을 임의의 키로 바꿀 때.

▷ 현 유저소유의 비어있는 파일을 생성 시킨다.

# touch cream

# ls -al cream

-rw-r--r-- 1 storming staff 0 10월 21일 17:02 cream

▷ process,가상메모리,디스크,cpu Monitoring 통계치를 보여준다

# vmstat 1 100 : 1은 interval이고, 100은 count이다.

▷ 현재 접속 사용자에게 메시지를 뿌린다.

wall : write to all users --> /usr/sbin/wall [-a] [-g] [filename]

- 기능 : Broadcast Message from ...

- option : -a broadcast message to the console

and pseudo-terminals.

-g grpname broadcast to a specified group only.

# wall -a text_file : text_file의 내용이 터미널 에 뿌려진다.

▷ 접속 사용자 확인 명령어

# who -a : 접속상태 의 자세한 정보

# who -r : 현재 RUN Level 확인

▷ 프레임 버퍼의 상태 변경

# /usr/platform/'uname -i'/sbin/cg14config

▷ 시스템 log file 들

/var/adm/utmp , utmpx

/var/adm/wtmp , wtmpx

/var/log/syslog

/var/adm/pacct

설명 : last 등의 명령어로 위의 파일들의 내용을 볼수 있는데, 유저의 사용상황은

위의 파일에 계속 쌓이게 된다.

그런이유로 위 파일이 비대해지면, zero파일로 많들어 줄 필요가 있다.

#cp /dev/null utmp 이런 식으로 ...

▷ C2 보안 레벨 이용 명령

- /etc/security/bsmconv , bsmunconv

위의파일 이용하여 특정 호스트 및 유저의 활동상황을 감시할수 있다.

2.2 System Information 확인 명령어


▷ 호스트 네임 확인

# hostname

▷ aliase된 호스트 네임 확인

# grep `hostname` /etc/hosts | awk '{print $3}'

▷ 호스트 네트웍 Address(IP address)

# grep `hostname` /etc/hosts | awk '{print $1}'

▷ 호스트 id 확인

# hostid

▷ OS, OS version, application architecture, kernel architecture, CPU type

Kernel virsion

# uname -a

▷ CPU의 상세정보, 메인메모리, Ethernet address, OS virsion등...

시스템의 상세한 정보

# dmesg

▷ Disk Configuration

# df

# df -a : 전체 file_system 각각 할당량 및 사용량(%) 을 Check. (df:disk free)

# df . : 현재 file system에 대한 device명 확인


※ System 모델명, 시리얼넘버 H/W Product에 관한 내용은 시스템 후면이나,

PROM상태에서 확인 할 수 있다.

※ 참고 : SysInfo home page

www.MagniComp.com/sysinfo/

2.3 중요 시스템 환경 File(Backup Key Files!)

위치 : /etc

; /etc/를 전부 백업하는 것이 좋다.

hosts ; 자신 및 Client들의 IP address/host-name이 저장된다.

DNS나 NIS를 이용한다면, 단순히 자신의 정보만 갖게된다.

IP_ADDRESS 가 바뀌었다면, 이 file을 편집해야 한다.

hostname ?? le0(이더넷-10Mbps)

networks ? hme0(10/100Mbps autosensing기능의 network interface)

netmasks ??

defaultrouter

group ; passwd file에 필요

passwd ; 유저들의 계정이 등록되는 file

shadow ; 2.x에서 나온보안강화용, password를 암호화하여 이 file에 저장

nodename ; 호스트명이 저장된 file

vfstab ; file system configuration

dfs/dfstab

inetd.conf

rc#.d DIR 안의 Script 들.


3장. Quota 설정


다음은 유저별 file_system사용 을 제한하기 위한 쿼터 설정 방법 이다. 클라이언트 서버 환경에서 서버의 리소스를 특정 유저가 전용하므로서 다른 유저의 피해가 우려될 경우 설정하는 것이 좋다.


# cd /

# touch quotas <------ quota 데이터 파일 설정

# edquota user_id

fs / blocks (soft = 0, hard = 0) inodes (soft = 0,hard = 0)

위와 같은 Default file이 에디터로 불려진다.

아래 설명을 참조하여 edit 후에 저장한다.

※ 설명 : / 이건 마운트된 디스크 파티션의 디렉토리이름이다.

(파티션 별로 쿼타를 설정)

예: /a/b/c/user_id(s) 이럴때 실제 fs가 마운트된 디렉토리까지

써준다. df 명령으로 확인 해볼것.

soft = xxx 이 값에 도달하면 경고 메시지를 내보낸다.

hard = xxx 이 값에 도달하면 더이상 쓸 수 없다.

inodes 파일 갯수라고 생각하면 된다.

위에서 xxx 는 block 값이고, 1 block은 512 byte 이므로

어떤 유저에게 50MB의 Disk공간을 할당하고 싶다면

97,656 = 50,000,000 / 512

이므로, soft = 97656을 해주면 된다.


이 환경을 다른 유저에게도 같이 적용 하고 싶다면, 아래처럼 환경만 복사하면 됨.


? #edquota -p 처음id 복사할id-1 복사할id-2.....

사용자 마다 다르게 쿼타를 준다면, 위 과정을 반복.


다음, 디스크 정보를 생성

? #quotacheck -v 디렉토리명 <--- 갱신된 유저별 list를 보여 주면서 Check


디렉토리는 위에서 말한 마운트된 디렉토리이름


쿼타 적용

? #quotaon -v 디렉토리


? user별 quota현황 확인 : quota -v user_id

? 전체 quota현황 확인 : repquota -v /home (home에 대한 전체 quota 설정치 확인)


? 부팅시 자동으로 quota를 적용시킬 때 : /etc/rc2.d에 아래 스크립트 포함시킴

if [ -x /usr/sbin/quotacheck ]

then

echo "Checking quotas. This may take some time."

/usr/sbin/quotacheck -v /home2

echo " Done."

fi

if [ -x /usr/sbin/quotaon ]

then

echo "Turning on quota."

/usr/sbin/quotaon -v /home2

fi


(/dev/dsk/c0t1d0s6 가 /home2 에 마운트 되어 있다고 가정

quotacheck를 해서 변동사항이 있는지 체크

quotaon 으로 /home2에 계정을 가진 id들에 대해 quota를 적용)

- quot -af : 유저에게사용된 Kbyte, 파일갯수, User의 내용 보여준다.


4장. SunOS 4.x의 trace, Solaris의 truss기능


4.1 SunOS 4.x 에 대한 추적(Trace)기능


프로그램을 튜닝 또는 디버그할 때는 어떠한 시스템 콜을 사용하고 있는지, 또한 어떠한 패러미터를 교환하고 있는지 판단하면 도움이 된다. 그 정보들을 조사하기 위해서는 trace명령을 통하여 프로세스 마스크내에 특별 비트를 설정한다. 그렇게 하면 추적이 이루어지며 커널의 시스템 콜 인터페이스 루틴에 의해서 보고되는 정보가 출력된다. 추적은 실행전체를 대상으로 하여 사용할 수도 있고, 실행중인 프로세스에 임의의 시점에서도 적용할 수 있다. 특별한 컴파일러 옵션은 필요 없다.

Solaris 2에서 trace는 truss로 명칭이 변경되며 더욱 많은 기능을 갖추고 있다.


이하에서 나타내고 있는 것은 추적 출력에 의미를 정확히 하기 위한 설명을 붙인 것이다.

이 출력에는 cp가 mmap콜을 사용하는 방법과 공유 라이브러리를 개시하는 방법도 나타내고 있다.


< trace 출력의 설명 >

-------------------------------------------------------------------------------------------------

트레이스 출력 설명

-------------------------------------------------------------------------------------------------

% trace cp NewDocument Tunning 명령에 대하여 trace를 사용

open ("/user/lib/Id so",0,04000000021 )=3 공유 라이브러리 로더를 획득

read(3,""..,32)=32 a.out헤더를 읽어 동적링크 여부를 확인

mmap(0.40960,0x5, 0x80000002, 3, 0):0xf77e0000 코드를 메모리내에 맵핑

mmap(Oxf77e8000, 8192, 0x7, 0x80000012, 3, 32768)=0xf77e8000 데이타를 메모리내에 맵핑

open("/dev/zero",O,07)4 O으로 재설정한 페이지를 획득

getrlimit(3, Oxf7fff8bo)=O 제한정보 읽기

mmap(Oxf7800000, 8192, 0x3, 0x80000012, 4, 0)=0xf7800000 /dev/zero를 bss?로 맵핑

close (3)=0 id so를 클로즈

getuid ()=1434 사용자 ID획득

getgid ()=10 그룹ID획득

open('/etc/IdsO.cache" , 0, 05000000021)-3 공유 라이브러리 캐시 오픈

fstat (3, Oxf7fff750)=0 캐시의 내용이 최신의 것인지 확인

mmap(0. 4096,Oxl, 0x80000001, 3, 0)=Oxf77c000 캐시를 맵핑하여 읽기

close (3)=O 캐시 폐쇄

open ("/usr/openwin/lib", 0, 01010525)= 3

fstat(3, oxf7fff750)=0 LD LIBRARYPATH에 /usr/openwin/lib이 포함

mmap(Oxf7802O00,8192, 0x3, 0x80000012, 4, 0)=0xf7802000 되어 있어 그것을 먼저 본다

getdents (3, Oxfi78000d8, 8192) 1488 올바른 버전의 라이브러리를 찾아서

getdents (3, oxf78000ds, 8192)= O 디렉토리 엔트리를 몇가지 획득

close (3)=0 /usr/openwin/lib close

open ("/usr/lib/-ibe so 1 6", 0, 032724)= 3 공유 libc 획득

read (3,"".., 32)132 OK확인

mmap (0, 458764, 0x5, 0x80000002, 3, 0_)= Oxf7730000 메모리내에 코드 맵핑

mmap(oxf779ca00,16384,0x7,0x80000012,3,442368)= Oxf779c000 메모리내에 데이타 맵핑

close (3)=0 libc 클로즈

close (4)=0 /dev/zero클로즈

open ("NewDocument", 0, 03)=3 드디어 입력 화일 오픈

fatat(3, Oxf7fff970)= O 사이즈의 통계정보 검색

stat ("Tuning",Oxf7fff930)=-1 ENOENT(No such file or directory) 출력화일의 통계정보 검색

stat ("Tuning",1Oxf7fff930)=-1 ENOENT(No such file or directory) 출력화일 없음

creat("Tuning" O644)=4 출력화일 작성

mmap(O, 82, OX1, 0x80000001, 3, 0)= Oxf7710000 입력화일 맵핑

mctl (oxf77100O0, 82, 4, Ox2)= O 순차 액세스 통지

write(4,"This is a test file for my paper".., 82)=82 새로운 화일로 입 ,출력

mnmap(oxf7710000, 82)=O 입력화일의 맵핑 릴리스

close (3)=O 입력화일 클로즈

close (4)=0 출력화일 클로즈

close (O)=O stdin클로즈

close (1)=O stdout클로즈

close (2)=O stderr클로즈

exit (O)=? 프로그램 종료

%

4.2 Solaris 2.x 에 대한 추적 기능


truss 명령에는 trace에는 없는 편리한 기능이 매우 많다. 자(子)프로세서를 추적하거나 시스템 콜과 시그날수(계산) 그리고 시간을 조사하는 기능이 있다. 또한 다른 옵션 기능을 사용하면 지정한 시스템 콜을 제외한 trace와 지정한 시스템 콜만을 추적하거나 그리고 데이타구조를 완전히 프린트 출력할 수도 있다.

이하의 표는 데이타 구조용의 장황한 모드를 설정하기 위해서 -v 옵션을 설정한 truss 명령의 출력 일부와 truss -c에서 시스템 콜의 수 (계산)을 표시한 예이다.

# truss -v all cp NewDocument Tuning

execve("/bin/cp", 0xEFFFF598, 0xEFFFF5A8) argc = 3

open("/dev/zero", O_RDONLY) = 3

mmap(0x00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xEF7F0000

open("/usr/lib/libintl.so.1", O_RDONLY) = 4

fstat(4, 0xEFFFF254) = 0

d=0x0080001E i=48439 m=0100755 l=1 u=2 g=2 sz=15720

at = Nov 7 15:31:06 KST 1997 [ 878884266 ]

mt = May 3 12:33:31 KST 1996 [ 831094411 ]

ct = Jul 3 14:29:10 KST 1997 [ 867907750 ]

bsz=8192 blks=32 fs=ufs

.....

# truss -c cp NewDocument Tuning

syscall seconds calls errors

_exit .00 1

read .00 2

write .00 1

open .01 12 1

close .00 11

creat .00 1

brk .00 2

stat .00 5

lseek .00 1

fstat .00 7

access .01 8 1

execve .00 1

mmap .01 20

munmap .00 8

memcntl .00 1

acl .00 1

---- --- ---

sys totals: .03 82 2

usr time: .03

elapsed: .12


ex) #cd /usr/openwin/bin

#cp openwin openwin.org

#vi openwin.org

"truss -fo /tmp/outputfile -t exec /usr/openwin/bin/openwin.org"를

openwin.org 의 맨처음에 삽입

#chmod 755 openwin.org

#openwin.org --> 하면 openwin을 trace 하면서 내용은 /tmp/outputfile에 쌓인다.

5장. Accounting & Permission


5.1 User Accounts(command line에서)

2.x에서 의 user accounts

#groupadd -g 100 dct

#cat /etc/group

dct::100:

#useradd -u 115 -g 100 -c "hong seong-chan" -d /user/hong -m -s /bin/csh hong

; UID 115, GID 100의 hong seong chan이라는 사람의 계정을 만드는데, 그 유저의

HomeDIR은 /user/hong(-d /user/hong)으로 생성(-m) 하고, 그 유저가 사용하는

쉘은 C-shell(-s /bin/csh)이고, login명은 hong일 것이다.

1)passwd file 보면

hong:x:115:100:hong seong chan:/user/hong:/bin/csh

2)shadow file 보면

hong:*LK*:::::::

#passwd hong ---> User "hong"의 패스워드를 지정해준다.


4.1.3에서 의 user accounts

#vi /etc/passwd

추가: std99::999:20:student99:/home/std99:/bin/csh

userID(8자이하소문자):password:UID:GID:full_name:home_dir:shell

#mkdir /home/std99 ; std99에 대한 홈디렉토리 작성

#cp .cshrc /home/std99 ; 다른 유저의 .cshrc 파일을 복사하는 것이 유리.

#ls -alg

#chown std99 /home/std99

#chgrp 20 /home/std99

#passwd std99 ; root가 유저의 pass를 부여한다.


소유권변경(super유저권한에서)

#ls -al /user

drwxr-xr-x kim dct 512 10월 6일 13:01 kim

drwxr-xr-x root other 512 10월 6일 12:55 kim2

#chown -f kim2 kim2

#chgrp -f dct kim2

#ls -al /user

drwxr-xr-x kim dct 512 10월 6일 13:01 kim

drwxr-xr-x kim2 dct 512 10월 6일 12:55 kim2


특정유저에게 퍼미션 제한 할 때

/usr/bin/getfacl --> Access Control List (ACL) 볼 때

#getfacl * --> 모든 파일 확인

/usr/bin/setfacl --> ACL 수정 및 추가

#setfacl -s ..... man_page확인

* /tmp 는 일반파일시스템이 아니기 때문에 퍼미션 변경이 안됨.

5.2 BSD Accounting Utilities

- accounting system은 account command를 enable함으로서 가능하며

/etc/rc file에 다음을 comment out

/usr/lib/acct/accton /usr/adm/acct OR

/usr/lib/acct/startup

- /usr/acct가 있는 filesystem이 95%이하이면 accounting을 하고

95%가 넘으면 자동적으로 accounting을 stop 한다

- SunOS에서는 kernel에서 SYSACCT configuration option이 포함되어

있어야 한다

- sa command로 report할수 있으며 sa -s 로 /usr/adm/acct의 내용을

compress하고 savacct file로 merge시킨다

/usr/etc/sa

% sa

1027 18063.15re 17.11cp 4078avio 4696k

16 1537.32re 6.22cp 1057avio 6258k cmdtool

14 12.79re 3.14cp 265300avio 6377k cp

7 17.18re 1.47cp 618avio 5902k suntetri

51 5.47re 0.69cp 1avio 4373k rm

6 481.65re 0.63cp 0avio 586k update*

37 99.61re 0.56cp 276avio 3443k vi

- leftmost : Total number of times the command was execute

- re : Total real time spent excuting the command

- cp : Total CPU time ,, ,, ,,

- avio : Average number of I/O operations per invocation of the command

- k : Average physical memory usage, in Kbytes

관련 FILE

- /var/adm/pacct raw accounting

- /var/adm/savacct summary by command

- /var/adm/usracct summary by user ID

A Script to Collect Accounting Data

#!/bin/sh

filename=`date | awk '{print $2 $3 $6}' -`

sa=/usr/etc/sa

recorddir=/usr/adm/localacct

if [ ! -d $recorddir ]

then

mkdir $recorddir

fi

pathname=$recorddir/$filename

date > $pathname

echo "Day's Activity (command summary)" >> $pathname

$sa -i >> $pathname

echo "Total activity (command summary)" >> $pathname

$sa >> $pathname

# this time, also compress reports into savacct

echo "Per-user activity" >> $pathname

$sa -ms >> $pathname

Day-to-Day Management

- /usr/lib/acct/runacct

Generates a set of five daily reports

/usr/adm/acct/sum directory내에 rprtmmdd형의 file로 보관되며

mm은 월, dd는 일을 나타냄

- /usr/lib/acct/dodisk

Gathers disk usage statistics, which are summarized by runacct

- /usr/lib/acct/ckpacct

시스템에 free block이 500이하일 경우 main accounting file

(/usr/adm/acct/pacct)이 계속 증가못하게 함

- /usr/lib/acct/monacct

Convert all daily reports into a monthly report

/usr/adm/acct/fiscal directory내에 fiscrptnn의 file name으로 저장

- /usr/lib/acct/prdaily

Get the accounting statistics for the current date and repoprt

- /usr/lib/acct/shutacct

To disable accounting cleanly, execute the shell script ~/shutacct

Accounting Reports & Management

- login name별, application별 Accounting과 last login을 report

% /usr/lib/acct/prdaily mmdd (예, 0908)

- CPU(MINS) : total cpu time

- KCORE-MINS : 분당 사용되는 physical memory

- CONNECT : The total amount of time the user was logged in

- DISK BLOCKS: ,, ,, disk storage that the user is occupying

- #OF PROC : ,, ,, processes the user executed

- #OF SESS : The number of times the user logged in during the day

- NUMBER CMDS : report된 기간동안 수행된 횟수

- TOTAL KCOREMIN : 이 program에 의해 사용된 physical memory(KByte)

- TOTAL CPU : 이 program에 의해 사용된 total cpu time

- TOTAL REAL : 이 program이 invoke된후 경과된 시간의 합

- MEAN SIZE : 이 program에 의해 사용된 평균 memory의 량

- MEAN CPU : 이 program이 실행하는데 소요된 평균CPU time(분)

- HOG FACTOR : program의 CPU효율로 total CPU time을 total 수행시간

(TOTAL REAL)으로 나눈 값

- CHARS TRANSFD : 이 program에 의해 transfer된 total character 수

- BLOCKS READ : 이 command에 의해 read/write된 disk blocks

# generate daily accounting reports (1 a.m)

0 1 * * * /usr/lib/acct/runacct

# update disk usage statistics weekly (2 a.m. Monday)

0 2 * * 1 /usr/lib/acct/dodisk

# manage accounting file size hourly (on the half-hour)

30 * * * * /usr/lib/acct/ckpacct

# generate monthly summaries (2 a.m. on the 1st of the month)

0 2 1 * * /usr/lib/acct/monacct


6장. CRON

/etc/cron, /usr/spool/cron/crontabs/*

“/etc/cron" 프로그램 은 주기적으로 어떤 프로그램을 수행시키는데 사용된다.

이때 주기적으로 수행되어질 프로그램은 "/usr/spool/cron/crontabs" 디렉토리

밑에 각 사용자의 사용자명과 같은 이름으로 생성된다.

이 화일은 만드는 방법은 아래 명령을 사용하면 된다.

% crontab -l root : /var/spool/cron/crontabs/root 내용 display

% crontab -e root :

이 명령을 root가 수행했으면 /var/spool/cron/crontabs/ DIR 하위에

"root" 라는 이름의 화일이 생성된다)

또는 vi 로 편집

--------------------------------------------------------------------------------

예)

# more /var/spool/cron/crontabs/root

# minute hour day month week

# 0~59 0~23 1~31 1~12 0~6 (0=sunday, 1=monday)

#

15,45 3 * * * find / -name .nfs* -mtime +7 -exec rm -f {} ; -o -fstype nfs -prune

5 9 * * 6 /usr/lib/newsyslog >/dev/null 2>&1

15 0,8 16 * * find /var/preserve/ -mtime +7 -a -exec rm -f {} ;

--------------------------------------------------------------------------------

crontab 화일의 맨 앞의 5번째 칼럼까지에는 각 명령이 수행되어질 일시와 요일이다.

지정한 것들은 아래와 같은 의미를 갖는다.

분 시간 날짜 달 요일 : 구분은 Space

15,45 3 * * * : 매일 3시 15분관 45분에 수행

5 9 * * 6 : 매주 금요일 9시 5분에 수행

15 1,18 16 * * : 매달 16일 1시15분과 오후 6시 15분에 수행


1) /var/spool/cron/crontabs/root (root계정으로 가정할때..)

위 파일을 편집하여 원하는 스케쥴을 설정/편집 한다.

2) ps -ef|grep cron : 현재 cron deamon이 돌고 있는지 확인

3) kill -9 "pid of cron" : cron deamon kill

4) rm /usr/lib/cron/FIFO : lock파일제거(/usr/lib/cron directory는 /etc/cron.d와 링크되어있음)

5) /usr/sbin/cron : deamon 재실행(위 편집한 명령대로 수행함)


예) vi /var/spool/cron/crontabs/root

###############################

#Min Hour Day Month Day Command

###############################

15 4 * * * find /var/preserve/ -mtime +7 -a -exec rm -f {} ;

0 23 * * * sh `sed -n 1p /etc/Alis`/janitor

0 * * * * /usr/lib/acct/ckpacct

10 12 * * 1-6 /usr/lib/acct/dodisk

20 12 1 * * /usr/lib/acct/monacct

30 12 * * 1-6 /usr/lib/acct/runacct 2> /var/adm/acct/nite/fd2log


※ log는 /var/cron/..... 에 생성됨


7장. NVRAM(OK_mod Command)

printenv ; 현재 설정되어 있는 시스템 환경치를 보여준다.

setenv ; 환경설정

module-info ; CPU Clock Speed

probe-scsi ; 현재 접속되 있는 SCSI DEVICE들이 열거된다.

(probe-scsi-all)

words ; ok 모드 에서의 명령어 열람

boot -a ; Interactive boot option

help diag ; 메모리,플로피드라이브,케쉬메모리 등. Test 명령어 사용법을 보여준다

ok test-memory ?> 메모리 이상 유무 확인 할때

ok _ ?> 이상 없다면 prompt만 나타나고, 램의 배치에 문제가 있다면 align error

메시지 가 나타난다.

TOD 관련 ERROR ; F-E-Handbook Vol I --> CPU-131

ok copy-clock-tod-to-io-boards

ok (ioboard# in hex) copy-io-board-tod-to-clock-tod


* 화면 resolution 변경할 때 : setenv output-device screen:r1024x768x76

* Center2000에서 model-100_type array 상태에서의 BOOT_DEVICE 설정치

ok setenv boot-device /io-unit@f,e0200000/sbi@0,0/SUNW,soc@0,0/SUNW

,pln@a0000000,78c8d4/SUNW,ssd

???????

??> array의 serial_number

; array A tray 1 번째 disk

7.1 OK mode상에서 banner 및 logo변경

[banner변경]

예를 들어 bannner를 "This is my computer" 이라하자.

먼저 ok prompt mode 즉 forth command mode로 들어가서

ok setenv oem-barner This is my computer

oem-banner = This is my computer banner

ok setenv oem-banner? true

oem-banner?= true

ok

또는 OS상에서

test# eeprom "oem-banner=This is my computer"

test# eeprom "oem-banner?=true"


[logo제작]

ok prompt mode to command를 이용하여 logo를 변경할 수 있으나,

보통 forth language가 익숙하지 않으므로 다음은 OS상에서 변경하는 예제만 살펴보자.

NVRAM상의 oem-logo값은 512 byte array(4096 bits 64x64)이다.

각 bit는 우측상단을 기준으로한 한 pixcel을 control한다.

array는 hexedicimal값으로 저장되고 printenv를 사용하는 것은 처음 8 byte를 보여줄 것이다.


1. openwindow에서icon editor를 이용하여 64x64 icon을 생성한 후 file로 save.

2. 예를 들어 만들어진 icon file이 my.logo라 하자.

# eeprom "oem-logo=my.logo" /* my.logo를 NVRAM array에 save */

# eeprom "oem-logo?=true"

3.system을 halt한 후 ok prompt에서 banner command를 수행하면 바꾸어진 logo를 확인할 수 있다.

7.2 NVRAM 값 변경

1) Host-ID란 시스템마다 각기 다른 Serial No.를 의미하는데, 이 Host-ID를 수정하는 이유는

license를 요구하는 특정 S/W사용시 Host-ID를 Check하여 Host-ID가 서로 일치하여야만 비로소

수행되기 때문이다.(호스트 마다 license를 check하는 deamon이 수행되고 있을 것이다)

2) Booting 도중에 break-key(STOP+A)를 누르고 n 을 쳐서 ok mode로 들어간다.

이 상태가 NVRAM 수정가능상태 이다.

3) NVRAM의 내용을 살펴본다.

ok .idprom

? ? ? ③ ? ? ? ? ? ? ⓐ ⓑ

Format/Type: 1 54 Ethernet: 8 0 20 2 8f 26 Date: 0 0 0 0

ⓒ ⓓ ⓔ ⓕ

Serial: 00 14 20 Checksum: ed Reserved: a5 a5 a5 a5 a5 a5 a5 a5 . . .


여기서 현재의 Host-ID는 “54 00 14 20”이다. 즉 Type와 Serial의 값이다.

?+ⓒ+ⓓ+ⓔ

4) 여기서 Host-ID의 값을 “5200fc7d”로 변경한다.


ok 52 1 mkp : 1번지의 내용 변경

ok 00 c mkp : c번지의 내용 변경

ok fc d mkp : d번지의 내용 변경

ok 7d e mkp : e번지의 내용 변경

ok .idprom : NVRAM의 변경 내용 확인


Format/Type: 1

반응형