svcs
- 서비스 전체 보기
#svcs -v
STATE
NSTATE STIME
CTID FMRI
legacy_run
-
8월_14
34 lrc:/etc/rcS_d/S50fjgi_sh
legacy_run
-
8월_14 64
lrc:/etc/rc2_d/S10lu
legacy_run
-
8월_14 65
lrc:/etc/rc2_d/S20sysetup
- 해당 프로세스 보기
#svcs -p network/smtp:sendmail
STATE
STIME FMRI
online 9:55:05
svc:/network/smtp:sendmail
9:56:05 18932 sendmail
9:56:09 18934 sendmail
svcadm
- 프로세스 재시작
#svcadm stop ssh
#svcadm start ssh
- 프로세스 사용 안하기
#svcadm disable network/smtp:sendmail
- 프로세스 사용하기
#svcadm enable network/smtp:sendmail
- 프로세스 일시적으로 사용안하기 / 재부팅
후 올라옴
#svcadm disable -t network/smtp:sendmail
- 프로세스 재시작
#svcadm restart network/smtp:sendmail
#svcadm refresh network/smtp:sendmail -> 설정파일
다시 읽어 옴
useradd(계정 만들기)
솔라리스에서 홈디렉토리를 지정하지 않을 경우 자동으로 /home 밑으로 만들게 됩니다. 리눅스에서도 마찬가지죠. 그런데 솔라리스에서는 autofs라는 서비스가 있는데 이놈이 /home을 indirect map에서 mount point로 사용합니다. 그래서 autofs가 떠있을 경우에는 /home 에서 어떠한 파일 오퍼레이션도 할 수가 없습니다. 문제는
기본적으로 autofs가 떠 있다는거죠..
아래와 같이 나온다면
automountd 데몬때문에 그런겁니다.
$ df -k /home
Filesystem
kbytes used avail capacity Mounted on
auto_home 0 0
0 0% /home
방법은 두 가지가 있습니다. 첫째는 autofs를 내리는 것이고 둘째는 유저를 등록할 때 홈디렉토리를
/export/home과 같이 /home이 아닌 곳으로 정의를 해줘야 합니다.
#useradd -g root -d /export/home/test -m
test(계정)
useradd [ -u uid ] [ -G gid [,gid,...] ] [ -d
dir ] [ -m ] [ -s shell ]
[ -c comment ] [ -k skel_dir] [ -e expire ] [
-f inactive ] loginname
-u : 유저의 id
-G : 사용자가 포함될 그룹의 id(다수 선택 가능)
-d : 사용자의 홈디렉토리
-m : 사용자 디렉토리가 생성되어 있지 않을 때 자동으로 디렉토리 생성
-s : 사용하는 셀 위치를 정해줌, 지정하지 않을시 /bin/sh 인
본셀이 적용
-c : 사용자가 어떤 사람인지 코멘트를 남기는겁니다.
-k : skel 파일이 있는 디렉토리를 지정하며, skel 파일이란 사용자
만들어 질때 로그인에 필요한 .profle 이라던지 .login
.cshrc 등등의 초기화 파일을 자동으로 홈디렉토리에 카피합니다
-e : mm/dd/yy 의 형식으로 해당 날짜가 되면 계정이 만기
-f : 정수를 입력하고 그 해당 정수만큼 접속이 없을 때 계정은 만기
loginname : 실제 만들 user 를 지정
이 내용들은
/etc/passwd 파일에서 확인
# cat /etc/passwd
passwd(패스워드 변경)
# passwd test
프로세스의 이해
프로세스란 현재 실행되고 있는 프로그램이다.
임의의 프로그램이 실행되어, 프로그램의 코드와 데이터가 메모리에 load되고 프로그램이 수행되기 위한 기본적인 환경이 설정되었을 때, 프로세스가
생성되었다고 한다.
프로세스를 생성시킨 프로세스를 부모 프로세스(parent process), 생성된 프로세스를
자식 프로세스(child process)라고 한다.
어떤 실행 파일은 구동되면서 2개 이상의 프로세스를 발생시키는 경우가 있다. 이러한 다중 프로세스를 생성하려면 프로그램에서 fork( )라는
시스템 콜을 호출한다.
ps 명령어 (process status)
시스템에서 시작되는 모든 프로세스는 프로세스 id(pid)라는 고유한 식별 번호를 부여
받는다. ps 명령은 시스템에서 현재 실행 중인 프로세스에 대한 정보를 pid와 부모의 pid(ppid)를 포함하여 표시한다.
사용법
ps [options]
옵션이 없을 경우 현재 자신이 사용하고 있는 터미널과 관련된 프로세스의 정보만을 보여준다.
-e : 현재 실행 중인 모든 프로세스(every)에 관한 정보를 보여준다.
-f : 프로세스에 관한 정보의 완전한 목록을 작성한다.
-l : 프로세스의 정보를 긴 형태(long format)로 목록을 작성한다.
-a : 가장 빈번하게 요구되는 모든 프로세스에 관한 정보를 보여준다.
사용예
ps -ef 명령은 현재 시스템에서 구동중인 모든
프로세스의 정보를 보여줍니다.
| (pipe) 는 표준출력을 표준입력으로 연결해
줍니다.
grep 명령어는 입력내용에서 특정 단어가
있는 줄만 표시를 해 줍니다.
ps -ef | grep <프로세스 이름>
- 프로세스 이름에 해당하는 프로세스가 현재 실행 중인지 여부를 알기 위해.
ps -fu <user>
- user가 실행 중인 프로세스들을 보여준다.
$ ps
PID TTY
TIME CMD
2719 pts/0 00:00:00 bash
3159 pts/0 00:00:00 ps
이와 같이 옵션 없이 ps 명령을 실행하면 현재의 쉘과 현재의 실행 명령어(여기서는 ps)에 대한 정보를 보여준다.
PID는 프로세스 ID, TTY는 터미널 번호, TIME은
프로세스 실행 후 지금까지 걸린 시간 그리고 CMD는 관련 명령어를 의미한다.
$ ps -ef
UID PID PPID C STIME
TTY TIME CMD
root 1 0
0 15:50 ? 00:00:00 init [3]
UID는 유저 ID, PID는 프로세스 ID, PPID는
부모 프로세스 ID, STIME은 시작 시간, TTY는 터미널 번호, CMD는 실행 명령어를 의미한다.
$ ps
-el
F S UID PID
PPID C PRI NI
ADDR SZ WCHAN TTY
TIME COMD
19 S 0
0 0 0 0
20 918e4
1 109cd4 ?
0:01 sched
.........
10 S 71 1218
1217 0 30 20
92ce4 22 92cd0
? 0:00 sh
│ │ │
│ │ │ │
│ │
│ │ │
│ └─ command
│ │ │
│ │ │ │
│ │
│ │ │
└─ execution time
│ │ │
│ │ │ │
│ │
│ │ └─── terminal
│ │ │
│ │ │ │
│ │
│ └─── use to control 'sleeping'
│ │ │
│ │ │ │
│ │
└─── process size
│ │ │
│ │ │ │
│ └─── the location of the process in
memory
│ │ │
│ │ │ │ └───
"niceness" for the process
│ │ │
│ │ │ └─── job priority
│ │ │
│ │ └─── CPU usage percent
│ │ │
│ └─── the ID of the parent process
│ │ │ └─── process
identification number
│ │ └─── user identification number
│ └─── process state (run:R,
sleep:S, wait:W, stop:T, end:Z)
└─── the status of process
STAT 상태
D (Disk wait) : 구동 일시 중지. 인터럽트에
의해 재실행 될 수 있음
R (Running) : 구동 중인 프로세스
S (Sleeping) : 일시적으로 쉬고 있는 프로세스
T (Traced/Stoped) : 구동이 정지된 프로세스
Z (Zombie) : 좀비 프로세스
W (Swapped out) : 메모리를 사용하지 않는 스와핑 상태
pkgadd
Solaris 관련 각종 freeware => www.sunfreeware.com
OS version 확인
# uname -a
# SunOS mradb 5.9 Generic_122300-14 sun4u sparc
SUNW,Sun-Fire-V890 => Solaris 9
Solaris9 용
top Download : top-3.6.1-sol9-sparc-local.gz
압축풀기
# gunzip top-3.6.1-sol9-sparc-local.gz
패키지 등록(Install)
# pkgadd -d
top-3.6.1-sol9-sparc-local
pkgadd -d
/var/spool/pkg 디렉토리가 아닌 다른 디렉토리에 있는
소프트웨어 패키지를 추가할 경우에는 -d 옵션(device) 다음에 소프트웨어 패키지가 있는 디렉토리나 파일의 경로명을 명시한다.
prstat
report active process statistics
프로세스 별 메모리 사용량
확인
top과 비슷한 출력을 낸다.
vmstat
NAME
vmstat -
report virtual memory statistics
SYNOPSIS
vmstat
[-cipqsS] [disks] [ interval [count]]
DESCRIPTION
vmstat reports
virtual memory statistics regarding
kernel
thread,
virtual memory, disk, trap, and CPU activity.
On MP
(multi-processor) systems, vmstat averages the
number
of CPUs
into the output. For per-processor statistics, see
mpstat(1M).
vmstat only
supports statistics for certain devices.
For
more general
system statistics, use sar(1), iostat(1M), or
sar(1M).
Without
options, vmstat displays a one-line summary
of the
virtual memory
activity since the system was booted
사용예
# vmstat 5 2
kthr memory page disk faults cpu
r b w swap
free re mf pi po fr de sr cd f0 m2 m2 in
sy cs us sy id
0 0 0 2618080
651136 14 29 21 0 1 0
53 2 -0 -0 -0 433
260 191 0 0
100
0 0 0 2649592
636296 0 10 0
0 0 0
0 0 0
0 0 425
137 121 0 0
100
- kthr 필드
프로세스수와 그에 해당하는
데이타 표시.
r : 실행가능 상태로 대기큐에 쌓인 프로세스
수.
이 수가 크면 cpu가 작업을 원활히 소화하지 못하고 있다는 뜻이다.
r=0 : white(cpu idle)
0<r<3 : green(no problem)
3≤r≤5 : amber(cpu busy)
5<r : red(cpu busy)
b : I/O 자원을 할당 받지 못해 블록 된 process.
w : swap-out 된
process 수. 이 수가 크면 실행 가능한 대기 큐에는 쌓이지 않고
swap-out 된 대기큐가 많다는 것으로 physical 메모리가 부족하다.
- memory 필드
가상메모리와 physical 메모리의 사용 가능량.
swap : 현재 사용 가능한 스왑 크기.
free : 사용가능한 free 메모리 크기(kb). 인스톨메모리의 6%보다 계속 작으면 가용메모리가
부족. 잠재적인 병목 현상.
- page 필드
초당 발생하는 fault page 수와 실행중인 페이징 표시.
(paging : 가상 기억 장치를 통하여 동작하는
프로그램에서 사용되는 프로그램과 데이터를 주기억 장치에 설치하기 위하여 사용되는 방법의 한 가지. 가상
기억 장치를 고정 길이의 페이지로 구분하고 이러한 페이지를 하나의 단위로 하여 주기억 장치에 설치하고 주소를 변환한다.)
re : page reclaim
mf : minor fault
pi : page in(kb)
po : page out(kb)
fr : free(kb)
de : 단기간의 메모리 부족분. swap-in을 막기위해 swap-out시에 설정된 인공적인
memory 부족분.
sr : 가용메모리 부족시에 활성화된 페이지
데몬 수. sr이 크면 가능메모리 부족.
sr=0 : white
0<sr<200 :
green
200≤sr≤300 : amber
400<sr : red
- disk 필드
초당 disk 조작 수.
- faults 필드
초당 trap/interrupt 비율.
(trap :하나의 명령어가 실행될 때마다 자동적으로
발생되는 인터럽트. 이러한 인터럽트는 중앙 처리 장치에 의하여 하드웨어적으로 발생하게 되는데 프로그램에서
하나의 명령어가 실행될 때마다 자동적으로 미리 정의된 트랩 처리 루틴으로 실행의 제어권이 넘어온다. 따라서, 프로그램의 동작 상황을 하나의 명령어 단위로 추적 할 수
있는데, 일반 응용 소프트웨어의 디버깅 목적보다는 하드웨어 장치와 밀접한 관련이 있는 시스템 소프트웨어에서 오류를 찾아내기 위한 수단으로 이용된다.)
in : device interrupt(non clock)
sy : 초당 system fault
cs : cpu context switch 비율.
- cpu 필드
cpu 사용 시간에 대한 백분율(%)
us : 사용자 사용 시간
sy : 시스템 사용 시간
id : idle 시간
# vmstat -s
시스템 부팅 후 발생한 모든
event 표시
# vmstat -S 3
-S : 're' 와 ‘mf' 필드를 ’si' 와
‘so' 필드로 바꾼다.
si : 초당 swap-in 된 페이지.
so : swap-out 된 전체 프로세스 수.
# vmstat -c 3
cache flushing 상태
# vmstat -i
각 device의 interrupt 사항
iostat
각 디스크에 받는 로드
측정, 디스크 입출력, 활용도, Queue크기, 트랙잭션율, 서비스시간
등.
c : user mode, system mode, I/O를 위한 waiting, idle 등에 사용된 시간의 백분율.
D : 초당 diskdml read, write와 utilization에 대한
백분율.
t : 초당 터미널에서 사용된 read, write의 caracter 수.
x : 추가된 모든 disk들의 상태 표시.
사용예
# iostat -xtc 3
서비스시간(svc_t) : 입출력 요구에 소요된 시간. 다른 요구가 처리중이므로 Queue에서 대기하는 시간도 포함.
30초 평균이 30%이상이면 점검 필요.
# iostat -D 3
I/O가 가장 활발할 때 사용. util(디스크 사용도)가 65%이상이면
과부하.
util<5% : white
5%<util<35% : green
35%<util<65% : amber
65%<util : red
sar(system
activity reporter)
시스템의 여러 리소스들의
성능을 측정, 운영중인 상태에서 자동으로 데이터
수집.
파일로 정리 가능.
사용예
# sar 3 5
3초 간격, 5번 실행
# sar -o /tmp/sar_1.file 3 5
파일로 저장
# sar -f /tmp/sar_1.file
파일 읽기
# sar -b 3 5
버퍼 activity 검사. % reache≤90, %wcache≤65, 버퍼스페이스증가, 성능증가
# sar -d 10 3
disk의
I/O 점검, 디스크 사용량 점검
# sar -g 10 3
memory와
page-out 점검, 이 값이 높으면 가용메모리 부족
# sar -q 10 3
process 점검, 실행대기큐내의 프로세스 검색, runq-sz가 계속 2 이상이면 cpu 한계치 -
메모리상에 대기중인 process thread 수
# sar -r 10 3
가용메모리와 swap-file disk block, 가용메모리가 인스톨메모리의 6%보다
계속 작으면 가용메모리가 부족
ksh 자동완성 및 history 기능
/etc/profile 에 다음 추가
set -o vi or set -o emacs
자동 완성 기능
bash : vi, emacs 모드 (tab 키)
ksh : vi 모드 (ESC + \), emacs 모드 (ESC ESC)
히스토리 기능
bash : vi, emacs 모드 (↑↓ 키)
ksh : vi 모드 (ESC k, ESC j), emacs 모드 (Ctrl + n Ctrl + p)
ifconfig
ping 명령이 성공하려면 인터페이스 등록(plumb), 인터페이스 구성(Configure), 인터페이스 활성화(up), 인터페이스 물리적 연결.
ifconfig 명령어를 이용하면 네트워크 인터페이스 카드에 필요한
정보를 설정 뿐만 아니라 동작(사용) 유무와
인식 유무도 설정 가능함.
인식 유무에 사용하는 키워드
-plumb, unplumb
동작(사용) 유무에 사용하는 키워드 -up, down
일반적으로 네트워크 인터페이스 카드를 솔라리스 커널에서 인식하고
사용하기 위해서는 plumb 과 up을 한꺼번에
명시한다.
즉 ifconfig 명령어에
plumb을 키워드로 사용하면 네트워크 인터페이스를 커널에서
인식한 하드웨어 목록에 추가만 할 뿐이며, 네트워크
인터페이스를 사용 가능한 상태로 설정하지 않는다. 네트워크 인터페이스를 사용 가능한 상태로 전환하기
위해서는 키워드 up을 명시해야 한다.
bash-2.05#
ifconfig -a
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index
1
inet 127.0.0.1 netmask ff000000
hme0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index
2
inet 203.247.202.47 netmask ffffff00 broadcast
203.247.202.255
ether 8:0:20:a6:88:38
bash-2.05# ifconfig hme0 unplumb
bash-2.05# ifconfig -a
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index
1
inet 127.0.0.1 netmask ff000000
bash-2.05# ifconfig hme0 plumb
bash-2.05# ifconfig -a
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index
1
inet 127.0.0.1 netmask ff000000
hme0: flags=1000842<BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index
3
inet 0.0.0.0 netmask 0
ether 8:0:20:a6:88:38
inetconv
inetconv - convert inetd.conf
entries into smf service mani-fests,
import them into smf repository
솔라리스 10 버전 부터는
inetd를 수동으로 작동하지 않고 inetconv 라는 프로그램에 의해서만 inetd.conf에 넣은 entry를 SMF를 수행할 수 있도록 한다.
그러므로 /etc/inet/inetd.conf에 인터넷에 포함할 프로토콜을 넣은 후 inetconv를 실행하여야만 해당 항목이 인터넷에 적용된다.(killall
-HUP inetd는 안 됨)
SMF (Service Management
Facility)의 목록은 inetadm을 사용하여 확인할 수 있다.
Solaris 10으로 넘어오면서 모든 서비스가 기본적으로 SMF(Service Management Facility)로
변경됐기 때문에 inetd.conf에 설정된 서비스들을 제공하려면 이것
역시 SMF에 등록해야 한다. 이는 관리자로 접속한
후 쉘에서 단지 -e 옵션과 함께 inetconv 명령을 입력함으로써 해결할 수 있다.
inetconv -e
mkfile
swap 파일을 만들 때 사용
# mkfile 10m test
# ls -al
총 20500
dr-xr-x--- 2 root
root 512 5월 30일 12:03 .
drwxr-xr-x 39 root
root 1024 5월 30일 12:00 ..
-rw------T 1 root
root 10485760 5월 30일 12:03 test
파일 속성에 T가 붙어 있음을 유의 하자.
fdisk
prtconf, prtdiag
시스템 구성 정보 확인
swap
솔라리스는 가상메모리 시스템을 사용한다. 가상메모리 시스템이란 물리적 메모리와 하드디스크를 결합하여 하나의 큰 메모리 처럼 사용하는 것을 말한다.
솔라리스는 이러한 가상 메모리를 관리하기 위하여 메모리를 페이지 단위(8K)로 나누어 관리한다. 이러한 페이지를 모아서 세그먼트로 구성하여 사용한다.
솔라리스에서는 가상메모리를 swap으로
명칭한다.(swap partition과 구별)
이 swap(VM)은 운영체제가 사용 할 수 있는 메모리이다.
(그래서 swap를 하드디스크로만 생각해서는 안 된다. 이것은 swap partition과
구별하자. 즉
swap = 가상메모리로 생각하자)
가상메모리에 대한 자세한 사항은 다음과 같이 swap
-s 명령어로 알 수 있다.
# swap -s
총: 1098456k 바이트 할당 + 257088k 예약 = 1355544k 사용, 20707816k 사용 가능
swap partition 에 대한 정보는 다음과 같이 swap -l 명령어로 확인 할 수 있다.
# swap -l |
blocks은 전체 swap
partition의 크기이며 512 바이트 단위의 블럭이고, free는 그 중에 사용 가능한 swap partition의 크기이며 512 바이트 단위의 블럭이다. 즉,
(1638992 -
933104) * 512bytes = 361414656bytes --simple-- (blocks -free) /2 = 현재 스왑 아웃된 양(KB) |
getent
NAME
getent - get entries from administrative
database
SYNOPSIS
getent database [key]...
DESCRIPTION
getent gets a list of entries from the
administrative data-
base
specified by database. The information generally comes
from one or more of the sources that are
specified for the
database in /etc/nsswitch.conf.
사용예
# getent hosts solaris10
192.168.80.10 solaris10 loghost
#
# getent dns www.google.com
알 수 없는 데이터베이스: dns
사용법: getent database [ key ... ]
metadb
create and delete replicas of
the metadevice state database
옵션
-d : Deletes all replicas that
are located on the specified slice
이러한 기법을 수행한 device가 Metadevice 이며, Metadevice의 상태정보를 저장하고
있는 데이터베이스가 Metadb 이다. 이런 Raid 기법을 사용하기 위해서는 메타디비와 메타디바이스가 선수되어야 한다.
Metadevice 생성 순서는
metadb, metainit
# metadb -a -f c#d#s# : 메타디비 생성 (#은
번호)
metainit
configure metadevices
메타디비를 만들면 메타디바이스를 만들 수 있다.
메타디바이스를 구성하는 방법은 다음과 같다.
문법 : metainit 메타디바이스명 숫자1 숫자2 피지컬디바이스명1 피지컬디바이스명1 ...
(숫자1은
물리적인 디스크 개수, 숫자2는 논리적으로 만들 디스크 개수)
(physical device name 사이의 1 은 디스크를 구분하기 위해 쓴다)
예문
# metainit d10 3 1 c0t0d0s0 c0t1d0s0
c0t2d0s0
이렇게 쓰면,
"물리적인 디바이스 c0t0d0s0d 와 c0t1d0s0 와 c0t2d0s0 3개를 1개로 합쳐 d10 이라는 새로운 논리적인 디바이스를 구성한다." 는
의미이다.
이렇게 만든 논리적인 디바이스는 파일시스템을 구성하고 마운트를 걸어 사용할 수 있다.
# newfs /dev/md/rdsk/d10
# mount /dev/md/dsk/d10 /마운트지점
RAID
1 구성
metainit d1 1 1 c0t8d0s4
metainit d2 1 1 c0t9d0s4
metainit d0 -m d1 : d1은 d0의 Submirror (One Way Mirror)
metattach d0 d2 : d2는 d0의
Submirror (Two Way Mirror)
: d0라는 metadevice를 사용할 수 있는데 그 구성에서 보듯이 d0는 d1이 Mirror를
하고 d2가 추가로 붙는 것을 볼 수 있다.
RAID-5
구성
metainit d0 -r c0t8d0s4 c0t9d0s4 c0t10d0s4
: -r 옵션이 RAID-5를
구성하는 옵션이다.
metastat
display status for metadevice
or hot spare pool
metaclear
delete active metadevices and
hot spare pools
metaroot
The metaroot command edits the
/etc/vfstab and /etc/system files so
that the system may be booted
with the root file system (/) on an appropriate metadevice.
metattach,
metadetach
attach or detach a metadevice
prtvtoc
report information about a disk geometry and partitioning
VTOC - Volume Table of Contents
디스크의 파티션 정보 확인
사용예
# prtvtoc /dev/rdsk/c0d0s0
zonecfg
set up zone configuration. The
zonecfg utility creates and modifies
the configuration
of a
zone. Zone configuration consists
of a number of resources and
properties
예
# zonecfg -z zonename
subcommand
zoneadm
The zoneadm utility is used to
administer system zones.
A zone is an application container that is maintained
by the operating system runtime.
zlogin
The zlogin utility is used by
the administrator to enter an operating
system zone. Only a
superuser operating in the global system zone can use this utility.
zlogin operates in one of
three modes:
Interactive Mode, Non-Interactive
Mode, Console Mode
mount
옵션
-F : FSType
flar
The flar command is used
to administer flash
archives.
truss
trace system calls and signals
'System > Solaris' 카테고리의 다른 글
solaris - 오라클 솔라리스 11.1 발표 (0) | 2012.10.25 |
---|---|
오라클, 스팍 T4 출시 (0) | 2012.01.04 |
raw device (0) | 2011.12.08 |
/dev/dsk , /dev/rdsk (0) | 2011.12.08 |
한국오라클 시스템사업부 전략발표회 (0) | 2011.11.22 |