### 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
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 확인
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]"
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문서
▒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 -> 재부팅
▒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)
프로세서
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 사용 여부