Blog | Tag | Local | Media | Guest | Login  RSS
삽질/Solaris에 해당되는 글 14건
2008.01.24 :: Solaris#5-2
2008.01.24 :: Solaris#5-1 2
2008.01.05 :: Solaris#4-2 2
2008.01.05 :: Solaris#4-1
2008.01.05 :: Solaris#3-2 2
2008.01.05 :: Solaris#3-1
2008.01.05 :: Solaris#2-2
Solaris#5-2

### SMF ###

init - svc.startd : 하위 프로세서 관리, 프로세서가 죽으면 알아서 다시 살려줌. kernel이 직접관리하여 죽지 않음

ex) ps -ef | grep sendmail
      pkill -9 sendmail
      ps -ef | grep sendmail

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

init - rc script

run level 2 K* => stop
run level 3 S* => start

sbin/init


/etc/init.d/sendmail stop
/etc/init.d/sendmail start
/etc/init.d/sendmail restart
▼ -------------- sol 10 -------------- ▼
svcadm enable sendmail
svcadm disable sendmail


disabled 중지
degraded 의존성이 있는 서비스가 활성화 됮 못 한 상태
maintenance 고장


svcs 실행된 서비스
 -a 오프라인 서비스 포함 모두
 -d  의존성을 가진 서비스 (by)
 -D 의존성을 가진 서비스 (of)
 -xv 주로 같이 사용됨


/etc/init.d/syslog stop
/etc/init.d/syslog start
▼ -------------- sol 10 -------------- ▼
svcadm enable system-log


zones => solaris내에서 solaris를 가상화로 띄우는 기능


/var/svc/ => log, manifest, profile


nas (network access system), das (disk access system)


svcadm milestone multi-user (init 2)
svcadm milestone multi-user-server (init 3)

sol10 ver.update3 이전
init 명령으로 run lv 2에서 run lv 3으로 올라가지 못함 (버그)

sol10 ver.update4 부터
init, milestone 명령 호환


원본 /lib/svc/seed/global.db
사본 /etc/svc/repository.db => 일반적으로 사용하는 서비스 db


lagecy services
svcs 명령으로 확인 (제어 x)


inet - svc.startd에 위임
inetconv 등록하는 명령


cat /etc/release => 버젼정보 확인


### Back Up ###

백업의 필요성

  1. 해킹 및 불법적인 접근 시도에 따른 손상에 대비
  2. 관리자의 실수에 대한 대비
  3. 수해, 지진, 태풍 등의 천재지변에 따른 손상에 대비
  ........
  ........
  ........
  복구에 실패한 것은 용서해도 백업에 실패한 것은 용서가 안된다.


ufsdump, ufsrestore, tar // 거의 안 씀

 마운트 여부에 따라
  온라인 백업 (symantec netbackup, ufs snapshot (비추) )
  오프라인 백업

 방식에 따라

백업 전략 (스케쥴링)
lv 0 (full) ~ 9 (incremental)

mt
  compressed (사용자제, 깨질 위험성이 큼)
  mt erase (테이프 내용 삭제)
  1 tape에 한건씩 백업 추천

ufsdump
  ufs만 지원
  v 검증
  s 용량 체크
  ...

1.umount
2.fsck
3.ufsdump

실습=================================================

df-f

umount /export/home
fsck /dev/dsk/c0d0s7
ufsdump 0uf /back.0 /export/home

ls -al back.0

mount /export/home
cp -r /etc /export/home/data/etc

umount /export/home
fsck /dev/dsk/c0d0s7
ufsdump 3uf /back.3 /export/home

ls -al back*

mount /export/home
cd /export/home
rm -rf data

mv /back* /var/tmp

umount /export/home

ufsrestore ivf /var/tmp/back.0
quit

ufsresotre -rf /var/tmpback.0  현재 디렉토리에서 풀림

mount /export/home

du -h data   data 디렉토리 용량 정보

restoresymtable   복구하면 생성되는 파일

ufsrestore ivf /var/tmp/back.0

ls
cd /data
add games
marked
extract
1
n    기존 소유권을 그대로 받음
=====================================================

▒admin part.2▒

ifconfig pcn0 down => 비활성화

ifconfig pcn 0 up => 활성화

ifconfig pcn0 unplumb => nic를 커널에서 삭제

ifconfig pcn0 plumb => nic를 커널 모듈에 추가

snoop [port | host | ip] => 해당 port나 host, ip에서 오고가는 신호를 출력
-v detail, -o output, -i input, -a audio (출력시 소리)


svc:/network/physical:default <= sol 10

=> /lib/svc/method/net-physical


/etc/hosts => ip와 host name 매핑

/etc/hostname.pcn0 =>nic와 host name 매핑

/etc/nodename => system name
=====================================================
sol 9 이하

  /etc/hosts
  /etc/hostname.XXn
  /etc/nodename

  /etc/net/t*/hosts  // 3개 파일

  총 6개 파일의 이름이 일치 해야 함

sol 10 (03/05)

  /etc/hosts
  /etc/hostname.XXn
  /etc/nodename
 
  총 3개 파일의 이름이 일치 해야 함

  RPC 관련이 inetd의 SMF의 일부로 포함되어 있어 설정이 필요 없음

sol 10 (u1 이후)

  /etc/hosts
  /etc/nodename
  /etc/hostname.XXn

  /etc/inet/ipnodes => 선행, 기존에 ipv6용 이였음
=====================================================
lo0 loopback
le0 10M
hme0 100M
eri0 100M
qe0 qurd net (10M * 4개)
qfe0 qurd fast net (100M * 4개)
elxl 3com (pc net)
iprb0 intel (pc net)
rtls0 realtek (pc net)
v20z broadcom giga lan
v40z broadcom giga lan
bge0 broadcom giga lan
===============================================vm ware
pcn0 amd decnet (10M)
vmxnet0 vmware server (100M | 1G)
e1000 bridge, gigalan
=====================================================

inetadm -d, -e...
inetadm |grep telnet

l4 => port => 0~1023 (1024) well known port, 1024~65535 registered, dynamic ports
rpc (111) => 포트넘버를 모를때 접속하는 포트, 포트를 알려주고 그 포트로 접속

rpcinfo -p [target pc host name] => 해당 pc rpc 정보


svcadm disable spray:udp
svcadm enable spray:udp
=> inetadm -e /evc:/network/rpc/spray:default

smc => 관리 도구 gui


Solaris#5-1

Module.8


admin1 => 관리 // 인력관리(user), 접근통제(permission), 데이타관리(backup, recovery), 장치관리(device)


장치관리

초기인식 => ROM, on-line인식 => OS

(alias 기능 // 이름축약, 닉네임 별명으로 호출가능)

PROM, NVRAM => CMOS

openboot prom => prom

prom의 기능
 1. h/w와 관련된 test
 2. 초기화 (h/w에 맞는 드라이버 설치)
 3. os에 넘길 구성정보 생성
 4. os를 로딩할수 있는 권한
 5. h/w적 정보 수정
 6. third-party 드라이버 커버 // third-party => 부품 납품하는 협력업체

prom version
 1.x upgrade 불가 // 착탈식
 2.x upgrade 불가 // 착탈식
 3.x flash type // write 가능
 4.x sparc III
 5.x enterprise 이상

os에서 prom 정보 확인 => prtdiag

nvram
┌───────────┐
│eeprom  │=> prom
├───────────┤
│tod (time of date)  │=> 변경불가
├───────────┤
│ethernet (nic)  │=> 변경불가
├───────────┤
│host id (license no.) │=> 변경불가
├───────────┤
│전원부(배터리)  │
└───────────┘

ethernet => 08:00:20:3c:5f:60
  -------------- ------------
  VenderID S/N

HostID => 803c5f60 => vender id 2자리 + s/n


parameter => eeprom
┌───┐
│post │
│device │
│boot │
└───┘

prom과 nvram(eeprom) 상관관계
  prom       nvram
┌───────────────┐
│post    │ <=> eeprom, <=> ethernet
├───────────────┤
│device driver (default value) │
├───────────────┤
│user interface (CLI)  │ => eeprom
├───────────────┤
│parameter   │ => eerpom
└───────────────┘

rj231 => serial-usb gender // consol 접속 (monitor & controller)
{0} ok // prompt

commands
 banner => banner 정보 확인
 help * => *에 관한 도움말
 probe-scsi-all => 모든 scsi 장비 정보 확인 (-all => 추가로 i/o 보드에 장착된 장비까지)
   // probe는 초기 부팅때만 사용, 사용중에는 사용하면 안됨
 test scsi => scsi 장비 체크 (메세지가 없으면 정상, 에러의 경우 메세지 출력)
 test net => 네트워크 체크 (외부로 신호가 나가는지까지 체크)
 watch-net => 네트워크 체크 (switch까지 통신상태 체크, any key 누르면 종료)
...
 boot => os 로딩
 help => 도움말
 words => 사전 배열식 도움말
 printenv => eeprom의 parameter 값 확인
 setenv => eeprom의 parameter 값 수정
 reset all => 변경 값 재 부팅후 적용
 reset-all => m/b 2개 이상
...

 boot => 기본장치로 부팅
  -s => single user mode
  -v => 버버스 // 부팅과정을 상세히 출력
  -i => interactive
  -a
  -r => 장치 재구성 /etc/path_to_inst 파일 갱신

 printenv => parameter 정보 확인
 printenv [auto-boot?] => [auto-boot?]에 대한 변경값 확인
  parameter name / 변경값 / 기본값
   scsi-initiator-id => scsi1 (max target 0-7, 최상위(우선순위) 어뎁터 7 고정, 중복불가), scsi2 (max target 0-14)
   auto-boot? => true os자동부팅, false prom으로 부팅
   boot-device => 부팅 디스크 지정
   diag-switch? => false post 과정 약식, ture 자세히
   (?는 true | false)

 setenv => parameter 정보 변경 (적용x)
 setenv [auto-boot?] [false] => [auto-boot?]을 [false]로 변경

 set-default [boot-device] => [boot-device]값을 기본값으로 변경
 set-defaults => 모든 parameter 값을 기본값으로 변경

 reset-all => 재부팅 후 적용

 .registers => 처음 부팅하면 0, 이후에 값이 들어감

 probe-fcal-all => WWN (world wide number) > 21000... (2 fiber, 1 port 000...)

 show-devs => system에 있는 모든 device 확인
 devalias => alias name 정보로 모든 device 확인

 nvalias [name] [device path] => alias name 생성

 디스크 alias name 생성과정
 show-disks
 선택 (선택값이 카피 ctrl+y)
 nvalias mydisk 붙여넣기 노드정보
 reset-all (적용)

 devalias => 목록 추가 확인

 생성된 alias name 삭제
 nvunalias mydisk (삭제)
 reset-all (적용)

 부팅후 OS에서 prom(eeprom) 정보 변경 (set-default, set-defaults x)
 eeprom =>  nvram값만 출력

 eeprom auto-boot? => 확인
 eeprom auto-boot?=true => true로 변경 (리부팅후에 적용)

 작업이 안되는 경우 (행)
 전용키보드에서 stop키+a키 => prom(ok)모드로 전환

 diag-switch true일 경우 부팅중에 stop키+n키+power button => set-defaults됨
  // 부팅과정이 너무 오래걸려 diag-switch false로 변경할 경우

 stop+a 대행 ctrl+break
 ok모드로 변경 go 입력하면 os로 돌아감

 prom 에서 종료 power-off
  // 잘못된 명령어를 입력하면 다운될수 있음

4line date cable
2 transmit  transmit 2
3 receive   receive 3
7 gnd   gnd

ibm prompt >>


Module.9


System Run Level (전용장비) : init #, who -r
0 prom | power off
1, s admin ( s : fsck(umount), 1 : patch(mount) ) // transaction : hdd 공간이 변경
2 user level (share server x)
3 user level (share o) | default level
4 실행되지 않음
5 power off (power supply off) | linux gui
6 reboot (power supply on)

shutdown level : service 종료 (lv 0, 1, s, 5, 6)

boot process
  1. prom
  1-1. post
  1-2. boot => boot-device
  1-3. boot blk load (usfboot, read => load)

  2. boot program usfboot => kernel (32bit, 64bit) // ipc (h/w kernel <=> s/w kernel)

  3. kernel 초기화 (kernel module load => driver(exec/sys/stream/dev) )

  4. init => run control script

isainfo -v => 현재 사용 kernel 확인


Solaris#4-2

patch

  목적
  os ┬ 보안
       ├ debug
       └ 성능향상

  적용시점
  - os 설치 직후
  - 특정 app가 요구할 경우
  - 보안 patch

  - standard : 알려진 문제 처리
  - recommended : 알려진 문제 처리
  - patch clusters : 패치를 모아논 것 (sp)

  1010-01.zip
  major number - minor number
  (문제점)           (버젼)

  sunsolve.sun.com // 패치 확인 사이트

  showrev -p // 패치 내용 확인

  patchadd // 패치추가
  patchrm // 패치삭제

  ls /var/sadm/patch // 설치된 패치 확인

user administration

┌  super user (root)

└  general user (root를 제외한 모든 유저) ┌ account // /etc/passwd
     ├ password // /etc/shadow
     └ homedirectory

  /etc/passwd
  계정명 : x(원래 pw자리) : uid : gid : comment : homedirectory : login shell
  uid -> 0이면 root // 100~65000 일반유저 //
  nobody 원격접속자를 위한 가상 계정 nobody4 구버젼의 솔라리스 접속될 경우를 위한 가상 계정 // /home 홈디렉토리)

  /etc/shadow
  계정명 : password : pw변경 날짜 (1970.1.1부터 시작된 카운터) :::: (pw 에이징, pw 관리)

  group
  major : 1개 -> 권한 (회사의 부서 개념)
  minor : 15개 (회사의 동호회 개념)

  /etc/group
  그룹명 : 그룹pw : gid : 유저리스트


  group babo
  useradd -m -d /export/home/test1 -g babo -G other -c "real babo" -u 1000 -s /bin/ksh test1

  usermod

  userdel

\는 명령이가 다음 라인으로 이어진다는 의미

  passwd -d (id) // pw 삭제

  chown -R id:gid /경로 // 디렉토리 소유권 변경
  chgrp // 거의 안씀


  who
  whoami (ksh)
  who am i
  rusers -l
  finger
  finger -m userid
  last

  touch /var/adm/loginlog
  chown root:sys /caradm/loginlog
  chmod 600 /var/adm/loginlog

  /etc/default/login
  console=/dev/console // 오프라인으로 직접 연결 // #을 붙여 각주로 만들면 텔넷접속

  /etc/ftpd/ftpusers // ftp 접속을 막을 userid 추가

  su userid (사용자 바뀜)
  su - userid (사용자 바꾸고 초기화파일을 읽음)


  ps (프로세서 확인)
  kill (시그널 전달)

  sdtprocessor (gui)
  prstat (cui)

  scheduling
  at -> 한번 / 환경변수o
  cron -> 주기적 / 환경변수x

  at (time)
 
  atq // 예약 작업 확인

  /etc/cron.d/at.dny // 명시된 id 작업 제한
  /etc/cron.d/at.allow // 명시된 id 작업 가능 // 우선

  crontab -e // cron table 수정 // vi 실행됨 // vi 실행이 안되면 환경변수 설정 //EDITOR=vi ;export EDITOR
  min(0-59) hour(0-23) day of month(1-31) month(1-12) day of week(1-7)

  who -r

  init ?
  0 ; prom ok>
  s ; single-user, critical fs mount -> net x
  1 ; single-user, all local fs mount -> net x
  2 ; multi-user, 일부 service 동장 안됨 -> net o
  3 ; multi-user, 모든 동작 -> net o
  4 ; ?
  5 ; power off
  6 ; reboot

init 6 (스크립트 실행 후 종료)
poweroff (종료)
shutdown (메시지 전송후 종료) // shutdown -y -g [시간] -i [런레벨] "[message]"


Solaris#4-1

device (disk)를 이해한 상태


설치방식┌> 매체 (fs을 읽을 수 있는 pg내장)┌> cd-rom (장정;빠름 단점;매체를 가지고 직접 설치)
            │                                               │
            │                                               └> network ┌> jump start arch, ver 상관 없음
            │                                                                 │
            │                                                                 └> flash arch 고스트 방식
            │
            └> 설정 ┌> interactive cd-rom에서 사용
                         │
                         └> flash  network에서 사용


copy와 image 비교

데이터를 복사해 다른 위치로 옮김, i-node의 연결성이 다름 library file // win: dll(api), linux, unix : so


server는 단순작업만 함으로 cpu clock보다는 cash가 높아야 함

설치시 메모리에 따라 설치 화면 출력이 달라짐

ibm - AIX - tiboli
websever - linux apm
(mail, dhcp end server용)
db - sun jsp orcle


pkg : package (시스템 설정에 관여하는 프로그램)

┌> installer type
│ ; arch, ver이 맞아야 함. 위치 고정. 삭제 uninstall // 제조사에서 제작
└> source type
 ; 직접 compiler. 위치 유동. 그냥 삭제 // 제조 불명
   /usr/local/bin 설치
   compiler해야 함

installer type
  pkgadd 추가
  pkgrm 삭제
  pkginfo 확인
  pkgchk 체크

  pkginfo -l (pkgname)

  sunfreeware.com
    local.gz : pkg type
    tar.gz : source type

  pkgadd -d (pkgname)

gzip 삭제 // pkgrm gzip
gz 설치 // pkgadd -d (gz pkg 절대 경로)


vmware network

┌  network 사용안함 //
├  host only  // 외부와 통신 암됨
├  nat (VMnet8)  //
└  bridge  //

NAT (network address translation) : 공인↔사설을 전환

  vmnetdhcp.exe : vmware 공유기 (router) // PC 내 network // 외부단 x.x.x.1 내부단 x.x.x.2 (gateway)

  vmetdhcp - ethernet - switch - 공유기(dhcp) - modem - router

bridge : PC와 동급의 다른 PC로 인식


pkg 설치시 /usr/local에 설치되서 명령어만 입력하면 실행이 안됨

직접실행 : /usr/local/bin/프로그램명

경로추가 : echo $PATH // 경로확인
    PATH=$PATH:/usr/local/bin // /usr/local/bin 경로 추가
    PATH=경로 // 경로 새로 생성

압축해제 : gzip -d (.gz)


web server

A(pache)P(hp)M(ysql) // 무료
A(pache)J(sp)O(racle) // 고가

apche // httpd로 바뀜


gzip -d (filename)
tar xvf (filename)

source type package 설치 방법
  1. configure -> system의 정보를 수집하여 compiling의 옵션 생성
  2. make -> configure로 생성한 옵션으로 실제 compiling
  3. make install -> compiling한 pkg를 지정된 위치로 설치(move:이동)
실제 설치
  1. mkdir /usr/local/apache
      ./configure --prefix=/usr/local/apache // - - 2개 prefix 붙여서 입력

whereis (파일명)
which (파일명)

.profile
path변수 작성 저장
/usr/sfw/bin, /usr/bin, /usr/sbin

  2. make
  3. make install

/usr/local/apache/bin/apachectl/ start // 서버실행

/usr/local/apache/
  bin 실행
  conf 환경
  htdocs html문서




Solaris#3-2

▒admin part.1▒ Module 3, 4

format : file system 생성

disk 저장 - directory 구조 의 연결

fs : 디스크 구조 생성 (건물 인테리어)

디스크 전체 크기, 단일 파일 사이즈 규정

fs ┬ disk based : 물리적인 저장매체가 존재
    │ └> pcfs (fat16, fat32, flopydisk), ntfs, ext2 (linux), ext3 (redhat8.0이상), ufs (unix), iso-9660 (cd-rom), udfs (universal, dvd)
    │
    ├ distributed (network) : 분산
    │ └> nfs (network computer : os 종류 상관 없음)
    │
    └ psevdo : disk를 가상화, 램가 비슷한 동장
         └> swapfs

at&t bell연구소 => 최초 unix (bellfs)

** sa239_sg(admin1).pdf page.3-6 ~ 9 참조 **

vtoc : 디스크 구조┃bootblock : fs을 읽을 수 있는 프로그램 로드┃
0 sector     1 ~ 15 sector

primary superblock : 실제 저장단위┃backup super block : super block backup┃
16 ~ 31 sector (slice)                32 sector
━━━━━━━━━━━━━━━   slinder group 시작
data block number
cylinder group number
data block size
h/w label
mount point
fs state flag

cylinder group block : cylinder group info┃i-node table┃data block┃
━━━━━━━━━━━━━━━━━  ls -l 값
i-node number
cylinder group 당 data block number
directory number
free block number : 현재 사용되지 않는 block


slice당 cylinder 수는 같음. data block의 크기가 달라짐.

i-node : 실제 data가 저장된 주소, point
 direct : 12개 (96k = 8k * 12)
 indirect : 3개 minfree 사용 (single 16m = 8k * 2048, double 32g = 8k * 2048^2, triple 64t = 8k * 2048^3 실제 1t)
 shadow i-node : 1개

 minfree 영역 보여지지 않음. 2048으로 나눠 data block 각각 잡음

 구조 : mode (type, perm)┃uid┃gid┃size┃time┃name -> directory가 가지고 있음
 chmod (change mode : permission을 바꿈)

head가 한번에 읽는 단위 8k
아무리 작은 파일도 실제로는 datablock 8k를 잡음

flagmentation : 1개의 datablock에 2개의 i-node까지 들어감

newfs로 fs생성 (mkfs linux, solaris 7~8까지 사용, 현재 사용안함. mkfs를 호출)

newfs /dev/rdsk/c0d1s0

fstyp -v /dev/rdsk/c0d1s0 | head -10 -> 파일시스템 확인

tunsfs -m 1 /dev/rdsk/c0d1s0 -> minfree 영역 1% 변경


fsck (scandisk, 오류점검 및 복구, super block이 깨졌을 때 backup super block 위치 명시 sector number 사용)

커널 소프트웨 장애, 하드 장애, 정상적이지 않는 종료, 외부 요인에 의해 shutdown등의 경우
fsck를 쳐 조야지 부팅됨. 사용중일 때 치면 안됨.

rdsk 기준 512k

superblock consistency(일관성)
cylinder group consistency(일관성)
i-node consistency(일관성)
datablock consistency(일관성)

fsck /dev/rdsk/c0d1s0


super block 복구

dd if=/dev/zero of=/dev/rdsk/c0d1s0 count=32 bs=512 (if : input device | of : output device | crack : 깨뜨림)
fstyp -v /dev/rdsk/c0d1s0 | head -10 (확인)
newfs -N /dev/rdsk/c0d1s0 (simulation, backup super block 위치 확인)
fsck -o b=98464 /dev/rdsk/c0d1s0 (복구, b=32를 제외한 다른 아무 값)

df : 현재 디스크 사용률 확인, -k : killobyte 단위로 확인, -h : 사람이 인식하는 단위로 확인
du : directory내의 파일이 사용하는 block 확인

smc (제어판)

특정 디렉토리의 용량이 증가하면 그 디렉토리만 다른 디스크로 마운트

mount [옵셥] device(/dev/dsk/c0d1s0) mountponit(절대경로디렉토리) // 1개 mount에 1개 디렉토리만 가능
df -h (확인)

fs이 깨지면 mount 안됨

mkfile 300m a (a라는 300mb 파일 생성)

umount mountponit(절대경로디렉토리) // 마운트 해제, 데이타 액세스 안됨, i-node만 끊어짐

다른 디렉토리를 slice로 연결하면 기존 있던 파일이 액세스됨

lost+found 디렉토리 // 사용중 끊겨 i-node를 잃은 파일이 모이는 곳. 별도 slice에만 존재

mount 옵션
mount -o ro // read only
mount -o nosuid // suid를 적용하지 않음
mount -o noatime //
mount -o nolargefiles // 2g 미만의 파일 작성 가능
mount -o logging // 로깅파일 작성, 시스템 느려짐. 1g당 1m으로 64m까지 할당가능

suid // 실행파일에만 적용, 4000 permission, 누군가가 실행할때 파일 소유권자의 권한 할당, 종료되면 권한 반환
           shell은 터미널 종료때까지 실행됨

           cp /bin/ksh /export/home/user1/.ksh . 히든파일
           chmod 4755 /export/home/user1/.ksh
           ls -l /export/home/user1/.ksh
           ./.ksh > 루트 권한 할당 받음

/etc/vfstab 마운팅 설정 파일  mountall -r (remote) -l (local)
/etc/mnttab 현재 마운팅 설정 umountall -f (강제적으로 umount)

vi로 /etc/cfstab 수정 (추가)
device to mount /dev/dsk/c0d1s0 /dev/dsk/c0d1s1 /dev/dsk/c0d1s4
device to fsck /dev/dsk/c0d1s0 /dev/dsk/c0d1s0 /dev/dsk/c0d1s4
mount point /babo0  /babo1  /babo4  (타겟)
fs type  ufs  ufs  ufs
fsck pass  1  1  1  (우선순위 ; 0번 처리 안함)
mount at boot yes  yes  yes  (yes or no)
mount options ro  nosuid  nolargefiles (옵션)
저장 후 재부팅 (:wq, reboot) // 삭제할때는 라인 앞에 #만 추가하면 주석 처리됨

fuser
-cu mount_point (사용중인 프로세서, 유저 확인)
-ck mount_point (kill 신호 전송, 유저 팅김)
-c mount_point (사용중인 프로세서 확인)


원래 mount -F ufs /dev/dsk/c0d1s0 babo0 로 입력하나 디폴트 값으로 생략

cd-rom이 들어오면 자동으로 mount됨.  hsfs
/etc/init.d/volmgt stop(or start)


부팅이 안 될때 (root 복구, root 백업) page.4-19
boot cdrom -s (solaris 9 prom cd-rom single 부팅)
fsck /dev/rdsk/c0d0s0
mount /dev/dsk/c0d0s0 /a -> /a 램디스크
term=sun -> terminal mode =sum
export term -> 지역변수->변역변수
vi /a/etc/vfstab
umout /a
init 6 -> 재부팅


Solaris#3-1

▒fundamental▒

▒admin part.1▒ Module 1, 2

file 파일 속성 확인 : ls -l, ls -F
 file name(logical),  data block(hdd:physical), i-node(logical-physical link address)

link hard link, symbolic(soft) link
 hard link : name과 data block이 i-node에 의해 연결, file의 같은 내용을 다른 이름으로 연결
    
hardlink link file 생성 : ln source(file name) target(생성할 file name)
 // ls -il // 같은 파일 // created time으로 원본 확인 // library 개념 (dll) //

softlink link file 생성 : ln -s source(file name) target(생성할 file name)
 // ls -il // 원본 파일 내용 // 원본이 삭제 access 안됨 // 새로 원본이름 생성 시 연결 //
---------------
root 최상위 디렉토리, root user의 홈디렉토리
 bin 디렉토리 binary file ./user/bin
 dev(사본), devices (원본) softlink
 export 용도 없음
 home export/home 파일생성불가
 kernel cpu와 상관 없는 kernel
 platform cpu type별 kernel
 mnt -
 opt optional 프로그램 깔때
 sbin 시스템 부팅때 필요한 명령, root만 쓸수 있는 명령
 tmp -
 usr unix
 var log 파일

/dev dsk block
 md raid
 dsk block device
 rdsk character device
 term terminal 단말기
/etc 시스템 기본 설정
 inet 솔라리스 모든 서비스 (10이후 없음)
 init.d inet을 기반으로 서비스 on/off
 rc#.d #은 숫자를 의미
/usr bin
 sbin
---------------
filetype ordinary (일반), special (특수)
 일반 - text(vi, cat), binary(compiler), data(application)
 특수 - directory(mkdir), symbolic link(ln -s), devices(devices file name은 device의 physical name)

 directory - permission

user생성 mkdirk /export/home
 useradd -m -d /export/home/user1 user1
 passwd user1
 telnet .
 id
 pwd

 chmod 717 접불
 chmod 727 접불
 chmod 737 실불
 chmod 747 접불
 chmod 767 접불
 chmod 777
 r (실행) w(생성) x (접속)

 directory 권한, file 권한

*******************************************************************************************************************
disk관리 (정보관리)


disk physical 용어
- arm,spindle,head,rpm,platter,track,sector(512byte, system block//16개를 head가 동시 읽어 8192byte->cylinder, unix data block)

파티션을 나누는 목적 -> track을 기준으로 잘라서 access time을 줄인다.

solaris
slice -0 바깥쪽 o/s root
(patition) -1
 -2 섹터당 사이즈, 트랙당 섹터, 실린더당 트랙, 사불 (entire)
 -3
 -4
 -5
 -6
 -7

unix에서는 cylinder단위로 나눔

1. over wrap (x) : slice 앞으로 당겨 앞쪽 slice와 중복.
2. disk waste (x) : slice 뒤로 밀어.

scsi - c# (controler number) t# (target number) d# (disk number, lun:logical unie num) s# (slice number)
          d# => 0-7, 숫자가 클수로 우선순위가 높음. 7은 사용안함.
ide - c# d# (0-3) s#
        d# =>  0 - pm, 1 - ps, 2 - sm, 3 - ss

logical device => dev

logical device name -> user
physical device name -> system pnp(plug & play), hot plugable, hot spare
instance name -> kernel

/etc/path_to_inst => 현재 memory에 올라온 device의 목록 // 수정 (x)

/pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0:a
system bus 0번/ /ide 0번/slice 0번

/pci@0,0/ide@7,1/ide@0/cmdk0,0
controler / disk / slice

prtconf => 시스템 장치 확인
prtconf | grep -v not => 시스템에 장착된 장치 확인

format => 디스크 나누기 ($ : 디스크 사이즈 끝까지 할당, label : 디스크 적용, save : 파일로 저장 /etc/format.dat)

fdisk => 디스크 사용 용도 지정

장비인식 바벙
1. touch /reconfigure // 재부팅
2. devfsadm (drvconfig // solaris8) // 인식이 안되는 경우 재부팅
3. reboot -- -r (x86용,)
    reboot -r (spac용)

Volume Table Of Contents : 0 sector

디스크 동일(실린더크기) c0d1 prtvtoc c0d2

prtvtoc /dev/rdsk/c0d1s0 > a // 디스크 파티션정보 a로 저장
prtvtoc /dev/rdsk/c0d1s1 > b // 디스크 파티션정보 b로 저장
파일 비교
cmp a b
diff a b

vtoc 디스크 파티션 정보
s2에서 정보를 뜨고 덮어 씌움

prtvtoc /dev/rdsk/c0d1s2

fmthard -s a /dev/rdsk/c0d1s2 // a파일(디스크 파티션정보)를 디스크1에 덮어 씌움

/dev/dsk/ => block device   output>block 사용할 때만!
/dev/rdsk/ => charcter device > buffering output>block 생성, 점검 (사용 이외)

8k > block 단위, block * 16 = 512k > system

prstat 텍스트로 실시간 시스템 관리 출력 (2-2)


Solaris#2-2

프로세서
 PID == (background process)

 ┌ background process
 └ forground process

 명령이 내려지면
 기존 PID => PPID 변경, 새로운 PID 생성
 새로 생성된 PID 작업이 완료되면 PPID에 결과 송출 후 삭제되면서 PPID가 다시 PID로 변경

 PPID 상위 부모 프로세서가 죽으면
 PID가 고아 (ORPHAN process)로 됨 => init에 결과를 송출 삭제됨
 bug로 인해 undead => zombie 생성, 메모리 점유
 ===> reboot으로 해결
*******************************************************************************************************************
ps (프로세서 확인)
 pid tty (실행위치) time cmd

 ps -f | more
 uid (실행한 유저) PID PPID (만든것) c stime (시작시간) time cmd

 ps -el
 f s (staters) c (condition) pri (우선순위) ni (nice)

 s-s stan by, pri 직접 조정불가 ni 값 변경, tty ? 내부적으로 미리 생성

 sleep 60 : 60초간 터미널창을 잠김
 sleep 100& : bg로 실행
 
 ps로 job id 확인 [1]
 
 fg %1   // korn shell 부터 가능
 job id 1을 fg로 변경

 ctrl + z
 중지

 bg %1
 다시 bg로 실행

 새 터미널에서
 ps -ef | grep cp
 cp 명령을 찾음
*******************************************************************************************************************
kill
 signal을 전달, default가 term 신호

 hup(1번) -> 죽었다가 살아라
 kill(9번) ->    - 강제적으로 종료. orphan process가 생성 가능. 중단.
 term(15번) -> terminate 종결  - 정상적으로 종료, pid가 있으면 안 죽음.

 kill -15 pid

 pgrep -l sleep -> process "sleep" 검색
 pkill sleep -> process "sleep" 이름으로 종료

 sdtprocess& -> gui process 관리자 창
*******************************************************************************************************************
 rlogin hostname -> 가까운 server에 telnet이 아닌 바로 접속 * 보안문제로 사용하지 않음.

archive (압축)

 ftp
 port 20 (인증목적), 21 (파일전송목적)

 ip 설정
 ifconfig -a
 ifconfig pcn0 192.168.102.100
 ping 192.168.102.100
 netstat -rn
 route add default 192.106.102.2 // route delete default
 ping 192.168.102.2
 ping 192.168.1.115
 ftp 192.168.1.115
 anonymous (익명)
 
 bin -> binary 모드로 설정, 파일속성으로 전송하도록 설정
 hash -> #으로 전송 받고 있는 상태 표시
 get -> download
 put -> upload
 ls, dir -> 목록표시
 cdup, cd.. -> remote에서 상위디렉토리
 lcd -> local 디렉토리 변경

 babo.tar.gz -> gzip
 babo.tar.bz2 -> bzip2

tar -> 다중선택, 여러파일을 묶는 개념, 압축기능은 없음
 xvf -> 해제
 cvf -> 생성
 tvf -> 뷰어

 * 절대경로로 묶으면 절대경로로 풀림 * 묶을 파일이 있는 곳으로 들어가서 할것! *

 java는 architecture (cpu type)을 무시, jvm 프로그램 내에서 실행

 jar -> tar 제어 방식은 같음
*******************************************************************************************************************
 tar.gz -> tar xvf       ┐
 tar.bz2 -> tar xvfj    ┴ linux 에서는 바로 풀수 있음. unix는 안됨.

 bzip2-1.0.4.tar.gz 풀기

 -d 압출 푸는 옵셥

 gzip -d bzip2-1.0.4.tar.gz -> bzip2-1.0.4.tar로 풀림
 tar xvf bzip2-1.0.4.tar -> bzip2-1.0.4 디렉토리에 풀림

 poweroff -> 종료 명령어

solaris 10 설치 (starsyz/starsyz)
 설치 jump start -> mac address로 설치 rarp (admin 1, 2 과정)

 목적에 따라 설치할 수 있음. end user는 모두 설치
 
 설치과정 -> 1) 부팅 2) ID 3) config 4) install

 fdisk -> hdd 사용용도를 설정
 파일 시스템 배치 -> 파티션 개념으로 설정

 ┌ dhcp 사용안함 / 192.168.102.200 / 255.255.255.0 / ipc6 사용안함 / pcn0 없음
 └ 커버로스 아니오 / 이름 서비스 없음 /

 ldap -> active directory 사용 여부