shell(#mode)에서 간단하게 명령어를 통해 테스트를 진행하면서 "/dev/null 2>&1"의 의미를 알아본다,

아래 명령어는 표준 출력을 /dev/null로 redirection 하라는 의미로 표준출력을 버리라는 의미다,

# rm test > /dev/null


하지만, test라는 file이 존재하지 않는 경우 아래와 같은 표준에러가 출력된다,

# rm test > /dev/null
rm: cannot remove 'test': No such file or directory
#


방금 언급했지만, 이것은 "표준출력"이 아닌 "표준에러"이기 때문에 화면에 출력이 된것이다,
다시 강조하면 /dev/null 로 redirection 을 통해 화면 출력을 하지 않는것은 표준출력에 한해서 해당된다.


자 그렇다면, 표준에러를 버리고 싶다면 아래와 같이 사용하도록 하자,

# rm test > /dev/null 2>&1


2>&1 는 표준에러를 표준출력으로 redirection 하라는 의미다.
(0, 1, 2는 각각 표준입력, 표준출력, 그리고 표준에러를 의미)


정리하면 "rm test"의 표준출력을 /dev/null로 버리는데, 표준에러는 표준출력으로 redirection한다.

결국 결과는 표준출력이 되기 때문에 /dev/null로 버려지고, 화면에 결과가 뿌려지지 않게 되는 것이다.


/dev/null과 2>&1를 같이 사용하지 않는 경우 위의 예제는 결국 표준출력되기 때문에 화면에 에러 내용이 출력된다,



출처 - http://nmap.tistory.com/115
Posted by linuxism
,

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라는 서비스가 있는데 이놈이 /homeindirect 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)

     3r5 : 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

 200sr300 : 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 검사. % reache90, %wcache65, 버퍼스페이스증가, 성능증가

# 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
swapfile                 dev   swaplo
블록   사용 가능
/dev/dsk/c0t0d0s1  151,1     16     1638992  933104

 

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
Posted by linuxism
,

리눅스 명령어

System/Linux 2012. 3. 2. 10:47

리눅스 명령어

시스템 관리를하면서 접속한 특정한 사용자에게 혹은 전체 사용자에게 메시지를 보내야

할 경우가있다.

mesg [y/n]

다른 사용자가 나에게 메시지를 보낼 수 있는가 아닌가를설정한다.

 

 

write [계정명] [터미널]

다른 터미널의 사용자에게 메시지를 보낼 때 사용한다.

#write kimhs pts/2

 

 

wall [메시지]

모든 사용자에게 메시지를 보낸다

 

 

수퍼 유저와 일반 유저

일반 유저는보통의 작업을 수행하는 사용자. 시스템 전체에 영향을 주는 조작은 하지 못함. 다른 사용자의 파일변경이 불가능, $ 프롬프트가 나타남.

수퍼 유저는소프트웨어 설치, 디스크 백업, 사용자 등록 등 시스템 전체를관리하는 사용자. 시스템에 관한 모든 권한을 가짐, #프롬프트가나타남.

 

 

로그인과 로그아웃

로그인은 시스템을사용하는 사람이 누구인가를 시스템에 알리는 작업으로 사용자 명과 패스워드 입력하며 로그아웃은 시스템 사용의 종료로 logout 또는 [ctrl]+D 입력을 입력한다.

 

 

명령어 히스토리

   ↑↓ : 명령어의 히스토리 표시

   ctrl+r : 명령어의 히스토리 검색

   history : 명령어의 히스토리 화면 표시

   # history -c && history -w : 히스토리 삭제(또는 # rm -rf ~/.bash_history && history -w)

   #his [tab] : 자동 완성 기능

    !9 : 실행 명령 선택

 

표준 입출력

   < : 표준 입력         > : 표준 출력       >> : 추가 입력

  #cat > a.txt    cat >>a.txt    cat < a.txt

 

 

tree

디렉토리의계층적 표시

 

사용법

tree [옵션] 디렉토리

 

사용예

# tree /home

 

 

man

주어진 명령어나 유틸리티의 매뉴얼을 출력해 준다. 명령어에 대한 옵션이나 기능에 대한

궁금증이 있을 때 manpage를 참고하면 된다.

 

 

which

find가 특정 파일을 찾아주는 명령어인데 비해 which라는 명령어는특정명령어의 위치가 어디인지를 찾아주는 명령어이다
리눅스나 유닉스등에서는 명령어의 위치를 모두 기억하기 어려우므로 이 명령어를 활용하여 찾고자하는 명령어의 위치를 확인할 수 있다
아래의 예는 perl등으로 프로그램된 CGI를설치할 때 많이 쓰이는 perl의 경로를 확인하는 것이다
# which perl 
/usr/bin/perl 

 

whereis

whereis란 명령어도 이와 유사한 기능을 하는데 다른 점은 PATH에서 해당하는모든 디렉토리를 뒤져서 해당 명령어의 실행파일, man 페이지경로, 소스를찾아준다

# whereis perl 
perl: /usr/bin/perl5.00503 /usr/bin/perl /usr/man/man1/perl.1 

whatis

which whereis가 명령어의 위치를 찾아주는데 비해whatis란 명령어는 해당 명령어가 무엇을 하는 것인지 간단하게 보여준다
# whatis ls 
ls (1) - list directory contents 

12. 터미널

TTY (Terminal TYpe) : tty0~6 가상콘솔(ctrl+alt+F? ? : 1~7 여기서 F7 x윈도우)

pts/0 ~ : Pseudo Terminal Service 원격접속자들, 본 시스템의x윈도우로 접속한 유저

 

fdisk

  파티션이란 물리적인하나의 하드디스크를 논리적으로 쪼갠다는 의미이다.

 새로운 파티션을 만들거나 파티션을 수정하고자 할 때 사용한다. 하드 디스크의 여유가 없어 새로운 하드디스크를 장착하였을 때는 반드시fdisk 명령어를 사용하여 새로운 파티션을 만들고 mount작업을 해주야 한다.

 

  # fdisk -l

  현재 설치된 디스크정보를 보여 준다.

 

 #fdisk /dev/had

 The number of cylinders for this disk is set to 2610.

=====  중략 =====

Command (m for help):

Command

p : 현재의 파티션구성을 살펴보기 위한 명령어

n : 새로운 파티션을생성할 때 사용한다. primary, extended, logical 영역을 만들 때..

d : 파티션 삭제  q : 빠져 나옴  wq : 저장하고 빠져나옴    v : 파티션 테이블을 점검

 

fdisk 명령어를 사용하여 하드 디스크의파티션 정보을 확인하거나 설정 변경이 가능합니다.

 

# fdisk  /dev/hda          

 

- 파티션 정보 보기

명령(도움말 : m):p   [Enter]

 

디스크 /dev/hda:  헤드:   255,  섹터 63, 실린더  3469

단위 = 실린더  16065 % 512 바이트

 

 장치      부트   시작           블럭       ID    시스템

/dev/hda1    *       1      914    7341673+   b    Win95 FAT32   ☜  윈도우즈 설치 영역(7GB)

/dev/hda2          915      923       72292+ 83    Linux          ☜ 리눅스 부트 영역(70MB)

/dev/hda3          924     3649    21896595+  5    확장          ☜  Win 영역을 제외한 전체 용량(21GM)

/dev/hda5          924     1561     5124704+ 83    Linux          ☜ 리눅스 루트(/)영역(5GM)

/dev/hda6         1562     1816     2048256  83    Linux          ☜ 리눅스 /home 영역(2GB)

/dev/hda7         1817     1849      265041   82   Linux  swap    ☜  리눅스 스왑 영역(250MB)

 

- 도움말 보기

명령(도움말 : m):m   [Enter]

 

- 새로운 파티션을 만들기

명령(도움말 : m):n   [Enter]

 

l   논리 파티션 (5 또는 그 이상)

p   기본 파티션(1~4)

 

 

First  cylinder(4065-33416, default 4065):

새로 만들어질 파티션의 시작 실린터를물어본다. (여기서는 엔터만 누른다.)

 

Last cylinder or + size or  + sizeM  or  +sizeK (4065-33416, default  33416):

새로 만들어질 파티션의 마지막 실린터를물어본다.(용량을 늘리려면 +2000M 형식처럼 지정하거나, 아니면 주어진 값대로 설정하려면 엔터만 누른다.)

 

 

- 파티션 삭제

명령(도움말 : m):d   [Enter]

파티션 수 (1-4) : 4

 

- 파티션의 시스템 id 변경

명령(도움말 : m):t   [Enter]

파티션 수 (1-4) : 6

Hex 코드(코드 목록을 보기 위해서 L을 입력하시오): l

 

목록에서 변경할 id 항목의 코드를 입력한다.

 

- 파티션 정보를 저장하지 않고 종료

명령(도움말 : m):q     또는   ctrl + c(단축키 사용)

 

- 파티션 정보를 저장하고 종료

명령(도움말 : m): w

 

 

14. mkfs [option] [파일시스템] [장치명]

파티션의파일시스템을 생성한다.

 

15. sync

시스템 동기화를실행한다.

 

16. uname

현재 시스템의정보를 보여준다.

-a : 모든 정보 표시   -s : 시스템의 이름

 

 

hostname

자신의 컴퓨터에 부여되어 있는 이름을 출력한다.

#hostname

 

일회성 변경

# hostname linux  -> 재부팅하면 원래대로 복원

 

영구 변경

# vi/etc/sysconfig/network

NETWORKING=yes

HOSTNAME=linux.localdomain

GATEWAY=192.168.80.1

 

변경 후 Network 서비스재시작

# service network restart 또는/etc/rc.d/init.d/network restart

 

 

chkconfig

부팅시 자동 시작되도록 등록후 서비스 시작

서비스 추가

# chkconfig --add  serviceName


runlevel 활성화

# chkconfig --level 3 serviceName on


runlevel 비활성화

# chkconfig --level 3 serviceName off

 


파일 관리 명령어

 

리눅스의 디렉토리구조는 /(루트)라는 디렉토리가 있고 그 아래에 디렉토리가연결되는 트리(tree)구조를 가지고 있다.

 

1. 경로명

절대 경로 : 디렉토리구조의 최상위 계층인 /에서부터 표기

상대 경로 : 현재디렉토리부터 경로명을 지정

 

2. 현재 디렉토리 확인

#pwd

 

3. 디렉토리를 이동하는 명령

   #cd

   - : 이전의 디렉토리       ~ : 홈 디렉토리

   .. : 바로 윗 단계           . : 현재 디렉토리

지정안함 : 홈 디렉토리

 

ls(listing)

DOS dir과비슷한 명령어인데, 디렉토리명 등을 출력시키며 option에따라 다양한 정보와 함께 출력된다.

 

option

-a: 디렉토리 내의 모든 파일 출력

-i : 파일의 inode와함께 출력한다.

-l(long) : 파일 허용 여부, 소유자, 그룹, 크기, 날짜 등을출력한다.

-m: 파일을 쉼표로 구분하여 가로로 출력한다.

-r : 정렬 option이선택되었을 때, 그 역순으로 출력한다.

-h : KB 단위의 파일 크기를 출력한다.

-t : 최근에 만들어진 파일 순서대로 출력한다.

-x : 파일 순서를 세로로 출력한다.

-F : 파일의 형태와 함께 출력한다.

-R : 서브 디렉토리의 내용을 포함하여 출력한다.

-S : 파일 크기가 큰 순서로 출력한다.

-U : 정렬하여 출력한다.

-1 : 라인당 한 파일씩 출력한다.

--color : 파일의 형태에 따라 색깔을 다르게 보여줍니다.

[출처] 리눅스 명령어ls|작성자 라크스

 

-help : 도움말을 화면상에 나타낸다.

-version : 'ls'의 파일 버전과 함께 출력한다

 

디렉토리의 경우

drwxr-xr-x 2 rootroot 4096 jan 25 22:17 bin [출처] 리눅스 ls 명령어|작성자 삼도리

퍼미션 : 서브 디렉토리 개수 : 소유자: 소유그룹 : 용량(디렉토리크기) : 생성(수정)날짜 : 디렉토리명

 

파일의 경우

-rw-r--r--.  1 root root    22 2011-05-04 17:20 test01

퍼미션 : 하드링크 개수 : 소유자 : 소유그룹 : 용량(파일크기) : 생성(수정)날짜 : 파일명

 

두 번째 필드가 디렉토리와 파일 일 때 가리키는 값이 틀림은유의 하자.

디렉토리는 . ..을 포함 하고 있으므로 그 값은 최소 2가 된다.

 

용량 필드에서 파일은 파일의 크기(byte 단위) 이지만, 디렉토리의 경우 디렉토리 엔트리의 용량입니다. 디렉토리 엔트리에는"." ".."과 더불어서 해당 디렉토리 아래 있는파일들의 이름과 아이노드 번호 등의 목록이 들어가 있고, ext2 파일시스템을 예로 들면
http://kldp.org/Translations/html/The_Linux_Kernel-KLDP/tlk9.html

                          그림 9.3 : EXT2 디렉토리

EXT2 디렉토리

EXT2 파일 시스템에서 디렉토리는 파일 시스템내의 파일에 대한접근 경로를 만들고 저장 하는 특별한 파일이다. 그림 9.3은메모리 상에서의 디렉토리 엔트리의 모양을 보여준다. 디 렉토리 파일은 디렉토리 엔트리의 리스트이며 각각의디렉토리 엔트리는 다음과 같은 정보 를 갖고 있다 :

·        inode 이 디렉토리 엔트리에 해당하는 inode. 이 값은 블럭 그룹의 inode 테이블에 저장되어 있는 inode 배열에 대한 인덱스이다. 그림 9.3 에서 file이라는 이름의 파일에 대한 디 렉토리 엔트리는 i1이라는 번호의 inode를 참조하고 있다.

·        이름 길이(name length) 이 디렉토리 엔트리의 길이를 바이트로 나타낸다.

·        이름(name) 이 디렉토리 엔트리의 이름.

모든 디렉토리에서 처음 두 엔트리는 항상 "." ".." 이다. 이는 각각 "현재 디렉토리" " 부모 디렉토리" 를 의미한다.


그림 9.3을 보시면 될 듯 합니다.

그 그림에서가로로 놓인 테이블이 바로 디렉토리 엔트리, 즉 그 디렉토리의"내용"인 셈이고, ls -l 해서보이는 용량은 그 내용의 길이입니다.

du -s 는 그 디렉토리 안에 들어 있는 파일들의 용량을 합쳐서 보여주는 거고..

1GB 짜리 "1.mpg"라는 파일 하나덜렁 있는 디렉토리는 ls -l 하면 4096 일테지만
1B
짜리 "very very very very long name.txt"라는파일이 1000개 있는 디렉토리는 ls -l 하면 쬐~(?) 크겠죠 ^^

 [출처] 리눅스 ls 명령어|작성자 삼도리

 

 

mkdir

디렉토리 생성

-p : 지정된 모든 서브 디렉토리까지 함께 생성


 

cp [option] [원본파일의 경로와 파일명] [대상경로의 파일명]

파일이나 디렉토리 복사

  option  

-a : 가능한 한 원 파일의 구조와 속성을 그대로 복사한다. 

-b : 복사할 때 덮어쓰게 되는 파일은 백업을 만든다. 

-d : 심볼릭 링크는 심볼릭 링크로 복사한다. 그리고 원본 파일과의 하드 링크 관계를 유지한다. 

-r : 서브디렉토리 포함한 전체 복사        -v : 복사전에 파일명 표시

-f : 같은 파일명을 갖는 파일이 있을 경우 지운 후 복사

-i : 같은 파일명을 갖는 파일이 있을 경우 사용자 확인 후 복사

-I : 하드 링크를 만든다.         –s : 심볼릭 링크를 만든다.

-p : 원시 파일의 소유자, 그룹, 허용여부, 시간등을 그대로 복사

-R : 디렉토리를 포함하여 복사

-u : 파일의 정보를 갱신한다. 
     -x : 다른 파일 시스템인 하위 디렉토리는 무시한다. 

 

mv

파일을 다른 디렉토리로 이동 및 이름 변경. 파일을 이동시킬 때 원본파일은 삭제됨.

option

-b : 지워지기 전에 백업본을 만든다.

-f : 옮겨질 디렉토리에 존재하는 파일이 있으면 덮어쓴다.

-i : 옮겨질 디렉토리에 존재하는 파일이 있으면 확인한다.

-u : 옮겨질 디렉토리에 구 버전의 파일이 있을 경우만 옮긴다.

-v : 옮기기 전에 파일명을 출력한다.

 

Ex) mvfreeradius-server-2.1.8.tar.gz /usr/local/src

8. rm

  파일이나 디렉토리 삭제

-f : 강제 삭제        -r : 서브 디렉토리까지 삭제      -R : r과 같다

-i : 지우기 전에 확인    -V : 지우기전에 지울 파일 이름을 나타낸다

#rm -rf zlib-1.1.4.tar.gz 또는 rm -rf zlib-1.1.4*

 

9. rmdir

디렉토리 삭제. 주의 할 점은 디렉토리 내에 파일이 있다면디렉토리를 삭제할 수 없다.

-p : 지우고자하는 디렉토리의 상위 디렉토리까지 삭제

 

* : 와일드카드 

 

10. more

명령어로 한 페이지씩 문서를 보여준다.

 

11. less

more와 비슷한 명령어로 한 페이지씩 문서를 보여준다.

문서의 앞으로도 이동이 가능하다.

 

 

cat

파일의 모든 내용을 한번에 화면에 나타나게 한다.  

ex) #cat 파일명

파일을 생성한다

ex) #cat a.txt

파일명1의 내용을파일명2로 넣는다. 파일명2의기존 내용은 초기화된다

ex) #cat 파일명1>파일명2

파일명1의 내용을파일명2에 추가 시킨다.

ex) #cat 파일명1>>파일명2

 

cat은 파일의 내용을 확인하거나 간단한 파일을 생성하고자 할 경우에 사용한다.
파일의 내용을 보는 명령어로는 cat외에도 pg, head, tail, more, strings등의 명령어가 있으며 DOS명령어로는 type가 같은 명령어이다.

파일이 텍스트로된 파일일 경우에는 그 내용을 읽거나 알아볼 수 있지만, 바이너리(Binary)파일일 경우에는 내용을 strings로출력은 하지만 알아볼 수는 없다.

그리고 cat명령어는 2개 이상의 파일이름이 지정되면 모든 파일이 연결되어 보여진다.


명령어 사용형식
                cat [OPTION] [FILE]...

사용예 #1

아래와 같이간단히 "cat 파일명"이라고 하면 그파일의 내용을 간단히 보여준다.

[root@host1 commmand]# cat test.txt
Based upon
the NCSA server
configuration files
originally
by Rob McCool.

This is the
main Apache server
configuration file.

It contains
the configuration
directives that give
the server
its instructions.
[root@host1 commmand]#


사용예 #2

그리고 다음과같이 -b옵션을 사용하면 행번호에 번호를 붙여서 파일의 내용을 출력한다.
이때 빈행에는 행번호를 붙이지 않는다.
다음의 예를 보자.

[root@host1 commmand]# cat -b test.txt
     1  Based upon
     2  the NCSA server
     3  configuration files
     4  originally
     5  by Rob McCool.

     6  This is the
     7  main Apache server
     8  configuration file.

     9  It contains
    10  the configuration
    11  directives that give
    12  the server
    13  its instructions.
[root@host1 commmand]#


사용예 #3

하지만 빈행에도번호를 붙이고자 한다면 -n옵션을 사용하면 된다.
-n
옵션은 빈행에도 행 번호를 붙여서 파일내용을 출력한다.
아래의 예를 보자.

[root@host1 commmand]# cat -n test.txt
     1  Based upon
     2  the NCSA server
     3  configuration files
     4  originally
     5  by Rob McCool.
     6
     7  This is the
     8  main Apache server
     9  configuration file.
    10
    11  It contains
    12  the configuration
    13  directives that give
    14  the server
    15  its instructions.
[root@host1 commmand]#


사용예 #4

-s옵션을 사용하면 파일의 내용중 빈행이 2행이상 연속될 경우에는 한행만을 출력하게 된다.
-s
옵션과 -n옵션을 함께 적용하면 2행이상의빈행이 있을 경우에는 행번호를 1개만 붙이게 된다.
다음의 예를 보자.

[root@host1 commmand]# cat bible.txt
Based upon
the NCSA server
configuration files
originally
by Rob McCool.


This is the
main Apache server
configuration file.
[root@host1 commmand]#
[root@host1 commmand]# cat -s bible.txt
Based upon
the NCSA server
configuration files
originally
by Rob McCool.

This is the
main Apache server
configuration file.
[root@host1 commmand]#
[root@host1 commmand]# cat -sn bible.txt
     1  Based upon
     2  the NCSA server
     3  configuration files
     4  originally
     5  by Rob McCool.
     6
     7  This is the
     8  main Apache server
     9  configuration file.
[root@host1 commmand]#

 

사용예 #5

위의 예에서보았던 파일의 내용은 많지않으므로 간단히 한 화면에 모두 볼 수가 있었다.
하지만, 파일의 내용이 많아서 한 화면에 모두 볼 수가 없을 경우에는 파일의 내용을 출력할때 정지하지않고 계속적 출력이된다.
이때 출력되는 화면을 "CTRL+S"키로 일시정지시켰다가 "CTRL+Q"로 재개시킬 수 있다.

하지만, 다음과 같이 하면 한 화면씩 볼 수 있으므로 파일의 내용이 많을 경우에는 다음과 같이 사용하면 된다.

[root@host1 commmand]# cat httpd.conf | more
#
# Based upon the NCSA server configuration files originally by Rob McCoo
l.
#
# This is the main Apache server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs-2.0/>for detailed information a
bout
# the directives.
#
# Do NOT simply read the instructions in here without understanding
# what they do.  They're here only as hints or reminders.  If you areun
sure
# consult the online docs. You have been warned. 
#
--More--


이렇게 하면 한 화면씩 볼 수 있으며다음 페이지를 보려면 "SpaceBar"를 누르면 된다.

이 명령어는 "more httpd.conf"와 동일한 명령어이다.more명령어편에서 자세히 확인하기 바란다.

 

 

echo

주어진 인자를 단순히 화면에 나타나게 한다.

#echo “입력할 내용” > /tmp/test       

#echo “입력할 내용” >> /tmp/test     ->  >>는 덧붙여 쓸 때

 

 

grep

주어진 패턴을포함하는 파일의 라인을 출력시킨다.

# grep [옵션] [word] [filename]

 

옵션

 -b : 검색결과의 각 행 앞에 검색된 위치의 블록 번호 표시.

     검색 내용이 디스크의어디쯤 있는지 위치를 알아내는데 유용하다.

 -c : 검색 결과를 출력하는 대신, 찾아낸 행의 총수를 출력한다.

 -h : 파일 이름을 출력하지 않는다.

 -i : 대소문자를 구분하지 않는다.(대문자와 소문자 동일 취급)

 -l : 패턴이 존재하는 파일의 이름만 출력한다.

 -n : 파일 내에서 행 번호를 함께 출력한다. (새로 검색한 목록의행번호가 아니라 원래 문서가 가지고 있는 파일 자체의 문서번호를 출력한다.)

 -s : 에러 메시지 외에는 출력하지 않는다. 종료 상태를 검사할 때유용하게 사용.

 -v : 패턴이 존재하지 않는 행만 출력한다.

 -w : 패턴 표현식을 하나의 단어로 취급하여 검색한다.

 

# grep “Mem Total” /proc/meminfo

grep 의 주된 기능은 정규 표현식에매칭되는 문자열을 찾아서 해당 라인만을 출력하는 것으로 출력결과(or 입력)에서 찾는 문자열이 있는 라인만 보여주는 기능을 합니다.


$ grep "document.*hsk" ~/test | more

document와 hsk가 포함된 라인을 출력


grep 은 여러 버전이 있습니다.

- 가장 오래된 grep

- 확장 grep(또는 egrep) : 확장 정규표현식을 지원하고 grep중 가장 빠름.

- 소위 "fast grep" 또는 fgrep : 실제로는가장 느림.

 

 

| (파이프, pipe, 수직바) 의 뜻

"왼쪽 프로그램의 실행 결과를오른쪽 프로그램의 입력으로 공급하라" 입니다.

파이프 왼쪽 오른쪽 프로그램이 동시에 실행된다는 것은 엄밀히 말하면 틀린얘기입니다.

왼쪽 프로그램이 실행되고 그 결과가 output 되면오른쪽 프로그램의 input으로 공급되는 것입니다. 동시가아닌 순차적인 개념입니다. 예를 들면

"검색 프로그램의 출력을 정렬프로그램으로 파이프시킬 수 있고 다시 그 결과를 프린팅 프로그램으로 파이프시키거나 파일로 리다이렉트해서 저장할 수도 있다."

 

option

-C : 일치하는 문장의 상하 두 라인까지 포함하여 출력한다.

-c : 일치하는 라인의 갯수를 출력한다.

-h : 파일명은 출력하지 않는다.

-i : 대소문자 구분하지 않는다.

-l : 일치하는 내용을 가지는 파일명만 출력한다.

-n : 일치하는 내용을 가지는 라인 번호를 출력한다.

-s : 에러 메시지만을 출력한다.

-v : 일치하지 않는 내용을 출력한다.

-x : 전체 라인이 일치해야 출력한다.

 

 

find

원하는 파일을디렉토리를 탐색하면서 지정된 조건에 만족하는 파일을 찾는다. 이름이나,크기, 날짜, 사용자등의 조건을 지정하여 찾을수 있다.

 

사용법

find [찾을 경로명] [option] 옵션내용 [찾은 후 행할 작업]

 

[찾을 경로명]

. : 현재 디렉토리 이하

/ : 루트 디렉토리 이하(파일시스템 전체)

~ID : 특정 ID의 홈 디렉토리 이하

 

[option]

-empty : 비어있는 파일

-gid n : 특정 gid를 갖는 파일 (n : 특정 gid) 

-group gname : 특정 group에 속한 파일 (gname : group)

-uid n : 특정 uid를 갖는 파일(n : 특정 uid) 

-user : 특정파일을 소유하고 있는 소유자의 파일 

-used n : 최근에 n일 이후에 변경된 파일(n : 일수

-name : 찾고자 하는 파일의 이름을 정하면 된다. ) #find / -name test

- iname  : name과 같으나 대소문자 구분 하지 않음(case insensitive)

-perm : 파일의 권한 (permission)이 일치하는 것을 찾는다.

-prune : 지정한 디렉토리에서만 찾는다.

-user : 사용자의 ID에 따라서 검색한다.

-group : 파일의 소유그룹명으로 파일을 찾는다.

-nouser : 소유자가 /etc/passwd 파일에 있지 않은 파일을 찾는다.

-nogroup : 소유 그룹명이 /etc/groups 파일에 있지 않은 파일을 찾는다.

-atime : 최근 며칠 내에 접속한 파일을 검색한다

-newer : 최근에 갱신된 모든 파일을 검색한다.

-size n{c} : 파일의 크기로서 찾는다. n은 블록의 개수를(한블록:512byte) 블록뒤에

        c가 붙으면 kilobyte를 가리킨다.

-type : 파일의 종류에 따라서 찾는다.

d : 디렉토리파일, : 심볼릭링크파일, f : 일반파일

-maxdepth: 만약 딱 현재 경로에서만 하고, 하위 경로로는 들어가고 싶지 않으면 검색의

깊이를 지정하는 maxdepth option을 사용하면 된다. , find option 으로준 경로가 depth 1 이다. ex) find . -maxdepth1 -name ‘*.test’

   -mmin n : File's data was last modified n minutes ago.

      * find -mmin 5 => 정확히 5분 전에 변경된 파일 검색

  * find -mmin +5  => 5분 보다 더 오래전에 변경된 파일 검색

  * find -mmin -5 => 5분 이내에 변경된 파일 검색

  -mtime n : File's data was last modified n*24 hours ago.  See the comments for -atime to understand how rounding affects the interpretation of file modification times.

 * find -ctime +0  =>  1일 지난 파일
 * find -ctime +7 => 7일 지난 파일

 * https://linuxism.tistory.com/2385


[찾은 후 행할 작업]

-print : 사용자가 지정한 파일을 찾으면 표준출력을 통해 출력.

-exec 명령어 {} \; : 찾은 파일들에 대해서 쉘 명령어를 사용해서 특정명령실행

    {} : find로 찾은 파일리스트

    \; : -exec와 -ok는 반드시 escape 된 세미클론(\;)으로 종료해야함(옵션의 끝을 의미).

-ok : exec와 같음. , 실행 전 사용자에게물어봄.

 

예로 maria라는 이름을 가진 파일을 찾으려면

# find -name maria

/temp 0byte & find.c를 찾아서 /root에복사 할려면

 

#find /temp –size 0c –name find.c –type f –exec cp {} /root

 

# find /home -iname .rhosts -exec rm -f {} \;

-> 홈 디렉토리에 .rhosts 파일이 있으면 대소문자 구분 안하고 삭제

 

# find / -nameaccess_log -exec rm -f {} \;

, 위의 명령어는 서버전체의 / 디렉토리를 대상으로 (/) access_log파일을 찾아서(find) "rm -f 파일명"이란 명령어를 실행하라(-exec)는 의미입니다.
따라서 루트 디렉토리(/)이하의 모든 디렉토리에 존재하는 모든 access_log 파일들이 모두 삭제 됩니다.

 

# find /home -name error_log -exec rm-f {} \;

-> 홈디렉토리밑에 error_log  파일삭제
find /home -name *.bak -exec rm -f{} \;

-> 홈디렉토리밑에 bak 확장자 가진  파일삭제

 

#### 서버내 일정기간 지난 파일들 삭제하기 ####

# find /var/spool/mail -atime +5 -execrm {} \;
/var/spool/mail아래 있는 디렉토리에서 5일동안 접근하지 않는 파일(-atime +5)
삭제하라는 명령어 입니다.

# find . -exec grep hskim {} \;

# find . -exec grep -l hskim {} \; 


mount

cdrom이나 floppy disk를 사용하게 만들어 준다. 즉하드웨어장치를 특정 디렉토리로 연

결 시킨 후사용해야 하는데 이것이 바로 마운트이다.

 

사용법

mount [-t 파일시스템] [-option] [장치] [마운트 지점]

 

option

-v : 자세한 내용을 출력합니다.

-a : /etc/fstab에 적혀있는 파일시스템 중에 연결이 끊어져 있는 것들만 마운트 해서 다시 연결한다.

-f : 실제로 마운트를 하지 않고 마운트를 할 수 있는지 점검합니다.

-n : /etc/mtab 파일에 쓰기 작업을 하지 않고 마운트 합니다.

-r : 읽기만 가능하게 마운트 합니다. -o ro 옵션과 같습니다.

-w : 읽기/쓰기 모드로 마운트 합니다. 기본설정값이며 -o rw 옵션과 같습니다.

-t 파일시스템 종류 : 파일시스템 종류에는 ext3,iso9660등 파일시스템 종류를 적어줍니다.

                            만약 이 옵션을 사용하지 않는다면 파일시스템의 수퍼블럭을조사하여 자동으로 파일시스템이 선택됩니다.

-o 옵션 : 이곳에는 마운트 옵션들을 적어줍니다. 입력하지않으면기본적으로 defaults가 선택됩니다.

defaults : rw, suid, dev, auto, nouser, async의 옵션이 선택됩니다.

async : 파일시스템에 대한 입출력이 비동기적으로 이루어지게 합니다.

auto : -a 옵션으로 마운트가 가능하게 합니다.

dev : 파일시스템의 문자, 블럭 특수장치를 해석합니다.

exec : 바이너리의 실행을 허가 합니다.

noauto : -a 옵션으로는 마운트 되지 않으며 명시적으로만 마운트가 가능합니다.

noexec : 바이너리의 실행을 허가하지 않습니다.

nosuid : set-UID, set-GID를 무시합니다.

nouser : 일반 사용자가 마운트할 수 없게 합니다.

remount : 이미 마운트된 파일시스템을 다시 마운트 합니다.

ro : 읽기전용으로 마운트 합니다.

rw : 읽기/쓰기 모두 가능하게 마운트 합니다.

suid : set-UID, set-GID를 사용합니다.

sync : 파일시스템에 대한 입출력을 동기화 합니다.

user : 일반 사용자가 마운트할 수 있게 합니다.

 

floppy mount 예제

# mkdir /mnt/floppy

# mount -t msdos /dev/fd0 /mnt/floppy

 

cdrom mount 예제

# mkdir /mnt/cdrom

# mount -t iso9660 /dev/cdrom /mnt/cdrom

-> cd-title은 어떤 운영체제에서든지 iso9660 파일시스템으로 되어 있다.

 

 

umount

디렉토리와연결되었던 시디롬이나 플로피 디스크를 분리시켜 주는 것을 말한다. 플로피나 시디롬을 다 쓰고 나면 항상언마운트를 시켜주어야 한다. 만일현재의 위치가 마운트 포

인트 지점에 있다면 언마운트가 안 된다.

 

사용법

mount [마운트 지점]

 

사용 예

#umount /mnt/cdrom       

 

 

redirection (cat & echo)

리디렉션이란 어떤 명령을 실행한 후에 생기는 내용물을 사용자가 원하는 곳으로 출력하기 위해 만들어졌는데 표준 입력, 표준 출력, 에러출력 등의 방향을 다른 곳으로 바꾸는 것이다.

리디렉션의 기호는">"이다. 보통,">" 을 이용하여 명령의 결과를 파일로 리디렉트시켰을 때 그 파일이 존재해 있었다면 그것을 덮어쓴다. ">>"를 쓰면 파일을 덧붙여 쓰게 된다. 예로원하는 내용을 text.linux란 파일에 보내려면, 파일생성 명령어인 cat

을 이용하여 다음과 같이 지정하면 된다. 그 다음 원하는 내용을 입력하고 엔터키를 친

다음 ctrl+Z(또는 ctrl+c)을 입력하면 된다.

#cat >text.linux

redirectiontest       -> 원하는 내용을 입력한 것이다.

ctrl+Z

 

#echo >>text.linux echo test

 

#more text.linux

redirection test

echo test

 

text.linux 파일의 내용을 콘솔로 뿌려 줄려면

#cat <text.linux

redirectiontest       -> text.linux 파일내용이 콘솔에 나타난다.

 

* catecho는명령어와 비슷하며 cat < 이 되지만 echo는 안됨. 그리고 echo[입력할 문자] echo 다음에 바로 입력할문자를 줄 수 있으나 cat은 할 수 없음.

  echo cat처럼 파일을 생성할 수 없고 단순이 내용만 전달 할뿐이다.

 

 

표준 입력과 출력(stdin, stdout, stderr)

표준 입출력 기능은 입력/출력을다루는 기본적인 방법을 제공한다.

기본 입출력 스트림(I/O stream) 에는 표준 입력, 표준 출력, 표준 에러 가 있다

프로그램이 실행될때에는 기본적으로 키보드장치와 모니터장치를열어서 입출력이 가능하게 해놓았다. 이렇게 키보드 장치를 통한 입력을 표준입력이라하고모니터를 통해 출력하는 것을 표준출력이라고 한다

키보드를 통한 입력을 표준입력이라고 정의 하는건 문제가 없다. 그러나 모니터를 통한 표준출력에는약간의 문제가 있다. 프로그램이 모니터에 출력하는 정보에는 입력데이터를 정상적으로 처리해서 나오는 결과값외에 잘못 처리되어서 출력되는 결과값이있기 때문이다. 덧셈 프로그램을 만들었는데, 피연산자에 숫자대신알파벳 문자등을 넣었다면, 프로그램은 에러메시지를 출력할 것이다. 그런데똑같이 모니터에 출력이 되어버리면, 결과값이 에러인지 아닌지 구분할 수가 없을 것이다.

이렇게 출력값이 정상인지 에러인지를 구분하기 위해서 표준출력외에 표준에러를 제공한다. 결과적으로 프로그램은 최초 실행시 다음과 같은 3개의 입출력 장치를 open하게 된다.

리눅스에서 파일을 다룰 때에는 파일이름이아닌, 파일지정번호를 이용한다는 것도 알고 있다. 리눅스는이들 3개의 파일에 대해서는 아예 고유번호를 지정하고 있다.

 

0 : 표준 입력 장치(stdin) -> 키보드

1 : 표준 출력 장치(stdout) -> 모니터

2 : 표준 에러 장치(stderr) -> 모니터

> : 쓰기

< : 읽기

>> : 추가

 

program.exe 라는 프로그램이 있으면,

 

1)

stdout 만 파일로 저장하여 보고 싶다면

program >result.txt   또는

program >> result.txt (기존result.txt파일 뒤에 붙이기)

> 기호는 1>와 같다. 1이생략되어 있다.

 

2)

stderr 만 파일로 저장하여 보고 싶다면

program 2> result.txt

 

3)

두 개를 조합 할 때는 num>&num 형식으로 사용한다.

stdout stderr 을모두 파일로 저장하여 보고 싶다면

program 2>&1 result.txt

nohup program > rst.log 2>&1 &

 

 

20. 파이프라인

  파이프라는 것은 여러 명령을 함께 사용할 때, 한 명령의 결과가 다른 명령으로 전송되는 통로이다. 명령어를 하나하나씩 일일이 치지 않고도 한꺼번에 여러가지를 실행할 수 있어 편리하다.

ls화면을 한 페이지씩 출력하려면 #ls | more , 중단 하려면 q를 치면 된다.

 

21. head [-페이지] [파일의 경로명] andtail [-페이지] [파일의 경로명]

head 명령은 파일의 위쪽에서부터 지정된 수만큼의 행을 출력하며, tail은 반대로 파일의

뒤쪽에서부터 지정된 수만큼의 행을 출력한다. tail 명령어는실시간으로 모니터링할때도

자주 사용되곤 한다. 예를들어 /var/log/message란 로그파일은 시스템의 가장 중요한

이벤트를 저장하는 파일이다. tail –f/var/log/message를 실행하게되면 마지막에 발생되

는 로그내용을 모니커상에 실시간으로 출력해 주게 된다.

 

tail -n 10 file : file 파일의 끝에서 10번째라인부터 보기

 

22. sort

파일내의 단어 순서를 알파벳 순으로 정렬할 때 사용.

23. touch

파일의 수정시간을 변경하거나 0byte의 새로운 파일을 생성한다.

 

24. ln

심볼릭링크와 하드링크를 만들다.(심볼릭링크와 하드링크 매뉴얼참조)

심볼릭 링크

ln -s 소스 목적지

 

25. rsync

  rsync를 이용한 백업 방법 매뉴얼 참조

 

26.Linux에서 파일 생성

Linux에서 파일 생성 방법 2가지

1. cat 사용

Ex) head.test라는 파일명으로 파일을 만든다.

]# cat > head.test

다음과 같은 명령어를입력하면 쉘에서 입력이 가능한 형태로 전환된다.

내용을 test로 입력하고

ctrl + d 를 쳐주면파일이 생성된다.

확인을 하려면

]# cat head.test

2. touch 사용

touch란 원래 파일의시간 정보를 바꿔주는 명령어이다.

Touch 명령어는 주어진파일의 최근 사용시간과 최근 변경 시간을

시스템의 현재시간으로 바꾸어주는 역할을 하는 명령어이다.

그러나 이때 해당하는파일의 이름이 없으면

0바이트 크기의 이름만명명된 파일을 하나 생성한다.

Ex) head.test라는 파일명으로 파일을 만든다.

]# touch head.test

크기가 0으로 된 head.test파일이 생성됨을 ls –al로 확인 가능할 것이다.

compress, uncompress

가장 오래된 압축유틸리티이며 특히 오래전에압축된 파일들은 거의 대부분 이 유틸리티를 활용하여 압축되어 있습니다.

파일의 끝에 Z가 붙어 있는 압축파일들은 compress로 압축된 것입니다.

일반사용자들 보다 서버관리자가 필히 알아두어야할 유틸리티입니다.

사용법은 매우 간단하며 예를 들어 보겠습니다.

[sspark@ciss9dat]$ ls -l

total44

-rw-r--r--1 sspark sspark 5847 Jan 27 10:37 browser.html

-rw-r--r--1 sspark sspark 5879 Jan 27 10:37 host.html

-rw-r--r--1 sspark sspark 8295 Jan 27 10:37 hour.html

-rw-r--r--1 sspark sspark 858 Dec 7 04:02 log.range

-rw-r--r--1 sspark sspark 10733 Jan 27 10:37 page.html

[sspark@ciss9dat]$

[sspark@ciss9dat]$

[sspark@ciss9dat]$ compress *

[sspark@ciss9dat]$

[sspark@ciss9dat]$ ls -l

total20

-rw-r--r--1 sspark sspark 2999 Jan 27 10:37 browser.html.Z

-rw-r--r--1 sspark sspark 2866 Jan 27 10:37 host.html.Z

-rw-r--r--1 sspark sspark 3745 Jan 27 10:37 hour.html.Z

-rw-r--r--1 sspark sspark 436 Dec 7 04:02 log.range.Z

-rw-r--r--1 sspark sspark 4093 Jan 27 10:37 page.html.Z

 

compress로압축하기전의 용량과 압축후에 생성된 용량을 확인해 보시기 바랍니다.

압축된 후의 용량이 압축전의 용량의 절반쯤됩니다.

즉 압축률이 50%쯤이라고 볼 수 있죠.

그리고 압축이 된후에는 각각의 파일에 .Z라는 확장자가 붙게됩니다.

이는compress로 압축되었음을 의미하는 것입니다.

압축을 해제하는 방법은 다음과 같습니다.

 

[sspark@ciss9dat]$ uncompress *

[sspark@ciss9dat]$

[sspark@ciss9dat]$ ls -l

total44

-rw-r--r--1 sspark sspark 5847 Jan 27 10:37 browser.html

-rw-r--r--1 sspark sspark 5879 Jan 27 10:37 host.html

-rw-r--r--1 sspark sspark 8295 Jan 27 10:37 hour.html

-rw-r--r--1 sspark sspark 858 Dec 7 04:02 log.range

-rw-r--r--1 sspark sspark 10733 Jan 27 10:37 page.html

compress로압축된 파일은 반드시 uncompress로 압축해제를 해야합니다.

uncompress는파일이 .Z로 끝나는 것만을 찾아서 압축해제를 해줍니다

 

[출처] compress,uncompress |작성자 미노

 

Process 관리 명령어

프로세스란 현재 실행되고 있는 프로그램이다.

임의의 프로그램이 실행되어, 프로그램의 코드와 데이터가 메모리에 load되고 프로그램이

수행되기 위한 기본적인 환경이 설정되었을때, 프로세스가 생성되었다고 한다.

프로세스를 생성시킨 프로세스를 부모프로세스(parent process), 생성된 프로세스를 자식

프로세스(child process)라고 한다.

어떤 실행 파일은 구동되면서 2개 이상의 프로세스를 발생시키는 경우가 있다. 이러한 다중

프로세스를 생성하려면 프로그램에서 fork( )라는 시스템 콜을 호출한다.

 

 

ps ( process )

시스템에서 시작되는 모든 프로세스는 프로세스 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 inmemory
  │ │     │    │     │   │  │  └───"niceness" for the process
  │ │     │    │     │   │  └─── job priority
  │ │     │     │    │   └─── CPU usage percent
  │ │     │    │     └─── the ID of the parent process
  │ │     │     └─── processidentification 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) :
메모리를 사용하지 않는 스와핑 상태

 

 

pstree ( process tree)

ps 에 의해서 출력되는 프로세스 정보를 트리 형태로 나타낸다. 데몬을 관리함에 있어 유용한 명령어이다. 필요없는 데몬을 죽이기 위해서는 ‘killall 데몬명을 실행하면 된다.

option

-a : 파라미터까지 함께 출력한다.

-n : 프로세스 개수   -p : pid 표시    -u : uid 표시

-h : highlight. 현재 실행중인 프로세스를 진하게 출력시켜준다.

 

 

top

cpu와 메모리를 사용하는 작업들에 대한 시스템 정보를 출력한다.

현재 실행중인프로세스가 3초 단위로 모니터링된다. 리눅스는 메모리 사용공간에서 free 공간이많지 않은데 실제 메모리 부족이라고 볼 수는 없다. 메모리 증설은 swap(가상메모리)공간이많이 쓰일 때 하는 것이 바람직하다. 원래 화면으로되돌아 가려면 q를 입력한다.

 

option

top -d n : n초 간격으로 정보 갱신

top -s : 5초 간격으로 정보 갱신,cpu 사용률이 정렬순(Default)

 

top를 이용한 정보 출력 후의 명령어

q : 종료    N(shift + n) : pid 순으로 정렬      A : 최근 pid 순으로 정렬

P : cpu 사용률에 따른 정렬         M : 메모리 사용률에 따른 정렬

T : CTIME 순으로 정렬             I :load average, uptime 사용정보 on/off

m : 메모리 사용량 정보 on/off     t : cpu 사용량 정보 on/off

k : process 종료(실행 순서 k -> 종료할 PID 입력 -> enter)

c : 명령 인자 표시/비표시         space : refresh

u : 입력한 유저 process만 표시(실행 순서 u -> 유저이름입력 -> enter)

 

# top

top - 13:21:37 up 2:17,  2 user,  load average: 0.02, 0.02, 0.12

Tasks:  91 total,   1 running, 90 sleeping,   0 stopped,   0 zombie

Cpu(s):  0.0%us,  0.0%sy, 0.0%ni,100.0%id,  0.0%wa,  0.0%hi, 0.0%si,  0.0%st

Mem:    508572ktotal,   444516k used,    64056k free,    85844k buffers

Swap:  2031612ktotal,        0k used,  2031612k free,   271392k cached

 

  PID USER      PR NI  VIRT  RES SHR S %CPU %MEM    TIME+  COMMAND                                               

    1 root      20  0  2932 1416 1200 S  0.0 0.3   0:01.53 init

 

1 : 시스템의 가동 시간과 평균 부하의 숫자를 출력

현재시간(13:21:37) uptime (2시간 17)을 알 수 있으며, 현재로그인 된 사용자의 수(2 users)와 시스템의 최근 1 5 15에 대한 각각의 평균 부하율(load average)를나타낸다.

 

load average : 작업의 대기시간을 말한다. 값이 1이 나왔다면 1분 동안 평균 1개 정도의 프로세서가 대기상태에 있다는 것이다. 서버마다 차이가 있긴 하지만 5정도면 서버가 부하를 받는다고 생각한다. 과부하는 10 ~ 15 이상이면 과부하라고 본다.

시스템의 평균부하율 정보는 uptime으로 볼 수 있다.

 

2 : 현재 실행중인 프로세스들의 상황

전체 실행된현재 프로세스의 수는(91 total), 실행중인 프로세스(1running), 유휴상태의 프로세스(90 sleeping), 정지된 프로세스(0 stopped), 좀비 프로세스(0 zombie)들의 상황을 알려준다.

 

3 : cpu의 사용에 대한 상황을 보여준다. 이 정보를 통해 cpu의 추가적인 보강 계획이나 업그레이드 등의계획을 세울 수 있다.

사용자가 사용중인 cpu의 사용률(0.0% us), 시스템이 사용하는 cpu의 사용률(0.0% sy), NICE 정책에 의해 사용되는 cpu의 사용률(0.0% ni), 사용되지 않는 cpu의 미사용률(100.0% id), 입출력 대기상태의 사용률(0.0% wa)등의 상황에 대해 알려준다.

 

4 : 메모리의 사용에 대한 상황을 알려준다. (이 정보를 통해 메모리의 사용 현황에 대해 파악하고 메모리 부족 현상 등을 분석하여 추가적인 메모리의 확장에대해서 고려할 수 있다.)

전체 물리적인메모리(508572k total), 사용중인 메모리(444516kused), 사용되지 않는 여유 메모리(64056k free), 버퍼 된 메모리의 양(85844k buffers)등의 상황에 대해 알려준다.

 

5 : 스왑(swap) 메모리의사용에 대한 상황을 알려준다. (스왑 메모리의 사용이 증가할 경우 물리적 메모리의 확장을 고려할 수있다.)

전체 스왑메모리(2031612k total), 사용중인 스왑 메모리(0kused), 남아있는 스왑 메모리(2031612k free), 캐싱 메모리(271392k cached)등의 상황에 대해 알려준다.

 

PID : 프로세스 ID(PID)

USER : 프로세스를 실행시킨 사용자 ID

PRI : 프로세스의 우선순위(priority), 우선순위가 높으면 먼저 실행

NI : nice value값이다. 마이너스를 가지는 nicevalue는 우선순위가 높다.(-20 ~19)

VIRT : 가상 메모리의 사용량(SWAP + RES)

RES : 현재 페이지가 상주하고 있는 크기(Resident Size)

SHR : 분할된 페이지, 프로세스에 의해 사용된 메모리를 나눈 메모리의 총합.

S : 프로세스의 상태

S : Sleeping
D : uninterrupted Sleeping
R:Running
Z:Zombie
T:Stopped or Traced

%CPU : 프로세스가 사용하는 CPU의 사용률.

%MEM : 프로세스가 사용하는 메모리의 사용률.

TIME+ : 프로세스가 시작하여 사용한 CPU 시간

COMMAND : 실행된 명령어

SIZE : 프로세스의 코드와 데이터 크기

RSS(Real Swap Space) : 프로세스가 사용하는 실제 메모리 양 

 

 

4. arch(architecture)

현재 사용하고 있는cpu의 모델을 출력(i686- 인텔 펜티엄)

 

5. cal (calendar)

현재의 달을 출력해 주는데, cal과 함께 원하는 월과 연도를 숫자를 입력하면 원하는 달 의 달력을 볼 수 있다.

-j를 입력하면 율리우스 달력을 볼 수 있다. – y는 올해의 달력 표시

 

6. clock

CMOS 설정 시간을 출력하거나 변경할 수 있다.

 

 

date

현재의 시간과날짜를 출력한다.

 

시간 변경

date [MMDDhhmm[[CC]YY][.ss]]

MM    

DD     월 중 일

hh    

mm    

CC     연도의 처음 두 숫자 (선택적)

YY     연도의 나중 두 숫자 (선택적)

ss     (선택적)

 

오로지 수퍼유저만시스템 시계를 변경할 수 있다.

# date 010112002010

 

Time zone 변경

일시적 설정

# export env TZ=KST-09:00:00

영구적 설정

# rm -rf /etc/localtime

# ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

 

 

df (disk free)

하드의 전체 용량 및 남은 용량 볼 때 사용한다.

option

-h(human) : 사람이 쉽게 알 수 있는 형태인 바이트 단위로 출력한다.

-k : 블록의 크기를 1k바이트로계산

 

 

du (diskusage)

각각의 디렉토리와 파일들이 차지하고 있는 디스크 용량을출력한다.

예로 temp2 디렉토리가차지하는 용량을 보려고 할 때 #du temp2

option

-s : 총합계만을 따진다.

-a : 크기가 계산된 각 파일의 크기를 보인다.

-b : 바이트 크기로 출력.

-x : 현재 디렉토리에 마운트된 파일 시스템만 검사.

-L : 심볼릭 링크 자신의 공간 대신 연결된 파일의 크기를 다룬다.

 

# du -ch --sum *   -> 숨김파일 제외 및 현재 디렉토리 수준에서 출력

# du -ch           -> 숨김파일 및 하위 디렉토리 파일까지 출력

# du -sh .

# du -sh --max-depth=1 . -> 현재 디렉토리 내 파일 깊이에서 디렉토리 사이즈 출력

# du -xh --max-depth=1 /

 

 

10. free (freememory)

  현재 사용중인 시스템의 메모리 상태를 출력한다.

option 

-m(Megabyte) : 메모리의 양을 메가 바이트 단위로 출력한다.

-k (Kilobyte) : 메모리의 양을 킬로 바이트 단위로 출력한다.

 

11. quota

  각각의 사용자들이 사용할 수 있는 디스크의 용량을 나타낸다.

 

12. uname (unixname)

사용중인 운영체제에 대한 정보를 출력한다.

option 

- a(all) : 현재 사용중인 운영체제와 커널의 컴파일 정보 등을 출력한다.

 

13. su

현 상태에서 다른 사용자로 다시 login한다. 만약 사용자 id를입력하지 않으면, root login 된다.

 

 

shutdown

시스템을 종료할 때 일반적으로 사용되는 명령어이다. 리눅스에서는윈도우와 달리 시스

템을 종료할 때 반드시 작업중인 프로세서를 종료시켜 시스템을 종료해야 한다.

shutdown은 보안차원에서 시스템을 끌 때 사용하는 명령어이다. 현재 접속중인 모든 사

용자는 시스템이 종료된다는 소식을 받게 되고 로그인작업이 중지된다. 이명령어는 즉시

종료할 수도 있고, 특정 시간에 종료할 수도 있다. 모든 프로세스는 시그널에 의해 시스

템이 종료 된다는 소식을 접하게 된다. shutdown를 취소할때는 ctrl+c를 누름.

option 

- t n : option t 뒤에 n 초만큼후에 경고 메시지 후에 kill 신호를 보낸다.

- h (halt) : 완전히 닫는다.

- r (reboot) : 종료 후 재부팅을 한다.

- f (fast) : 빠른 리부팅을 한다 .(파일시스템 검사(fsck) 생략 )

- c : 이미 예약되어 있는shutdown을 취소.

 

ex)

#shutdown –r now   -> 시스템을 바로 재부팅한다.

#shutdown –h now   -> 시스템을 바로 종료한다.

#shutdown –h +3 “System checking”    -> 3분 후에 종료 메시지와 함께 종료한다.

 

 

15. halt

시스템이 먹통이 되어 아무런 반응이 없을 때 강제 종료. shutdown과 같이 root만 가능.

 

16. reboot

 시스템을 오래 사용하다 보면 시스템에 부하가 많이 걸려 프로그램 실행이느려지는 경우가 있다. 이것은 시스템 내부에서 연산 수행시 쓰레기 값이라고 불리는 것들이 쌓여있기 때문이다. 이러한 경우에 시스템을 재부팅시켜주면 문제가 해결되기도 한다.

 

kill

프로세스에일정한 신호를 보내서 프로세스를 종료한다. 신호의 종류는 여러가지가 있는데

kill -l 명령을 사용하면 신호의 종류를 확인할 수 있다.

 

시그널의 종류를 지정하지 않으면 프로세스를종료시키는 의미로 디폴트 시그널 ID 15번을 보내게 된다. 대부분의정상적인 프로세스들은 이 신호를 받으면 자동으로 종료된다.

 

예를 들면당신이 시스템을 사용을 마치고 로그아웃 할 때는 시그널 ID 1번의 HUP(hang up) 시그널이 시스템으로 전달되며, 이 시그널은 당신의 셸 상태에서 실행중인 모든 프로세서를 종료시키고(앞에서언급한 nohup에 의한 프로세서는 제외) 로그아웃 하게한다.

 

사용법

# kill [옵션] [PID]

 

옵션

-signalID

프로세스에게보낼 시그널을 지정한다.

시그널은 번호로지정될 수도 있고 시그널 이름으로 지정 할 수 있다.

-1 : hang up 실행중인 프로세스를 rebooting 한다.

-2 : 실행 중인 프로세스에게 인터럽트 키 신호를 보냄

-3 : quit

-9 : 가장 확실하게 실행 중인 프로세스를 종료시킴

-19 : stop

 

-l

시그널 종류를나열한다. 시그널의 종류는 시그널 번호 순서대로 이름으로 나열한다

# kill -l

1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP

 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1

11) SIGSEGV     12)SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM

16) SIGSTKFLT   17)SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP

21) SIGTTIN     22)SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ

26) SIGVTALRM   27)SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR

31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3

38) SIGRTMIN+4  39)SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8

43) SIGRTMIN+9  44)SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-1352) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7

58) SIGRTMAX-6  59)SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2

63) SIGRTMAX-1  64)SIGRTMAX

 

-s

특별히 보낼시그널 지정. 여기에는 시그널 이름이 온다.

# kill -s SIGTERM PID

 

 

killall

kill과 달리 pid로 종료할프로세스를 지정하는 것이 아니라 프로그램 이름으로 종료한다.

지정된 명령이무엇이든지 간에 수행 중에 있는 프로그램의 모든 프로세스들에게 신호를 보낸다. 만약, 시그널 이름이 지정되어 있지 않다면 SIGTERM(15)이 보내진다.

 

사용법

killall [-egiqvw] [-signal] name ...
killall -l
killall -V  

 

설명

killall 지정된 명령이 실행중인 모든 프로세스에 시그널을보낸다. 만약 시그널 이름이 지정되지 않으면, SIGTERM 이보내진다.

시그널은 이름이나(예를 들면, -HUP) 숫자에 의해(예를들면, -1) 지정될 수 있다. 시그널 0 (프로세스가 존재하는지 검사) 는 오직 숫자에 의해서만 지정될수 있다.

만약 명령 이름이슬래쉬(/)를 포함한다면, 특정한 파일을 실행중인 프로세스들은이름에 상관없이 죽도록 선택된다.

killall 는 나열된 명령에서아무런 프로세스도 죽지 않으면 0이 아닌 코드를 반환한다. 만약각 명령마다 최소한 하나의 프로세스라도 죽었으면, killall 0을 반환한다.

killall 프로세스는 절대자기 자신을 죽이지 않는다(그러나 다른 killall 는죽일 수 있다).

 

옵션

-e

매우 긴 이름에대해 정확한 짝을 요구한다. 만약 명령 이름이 15글자가넘으면, 완전한 이름은 이용 불가능 할 수도 있다 (다시말하면 그것이 바뀔 수 있다는 것이다.) 이런 경우에, killall는 처음 15자 이내가 맞는 것은 모두 죽일 것이다.-e 옵션을 지정하면, 이러한 영역은 지나치게 된다.killall -v 옵션이 -e 옵션과 함께지정되어 있으면, 각각의 지나친 엔트리마다 메시지를 출력한다.

-g

프로세스가 속한프로세스 그룹을 죽인다. 같은 프로세스 그룹에 속한 여러 개의 프로세스들이 발견되더라도 시그널은 그룹당한번만 보내진다.

-i

죽이기 전에 확인을위해 상호적으로 물어본다.

-l

알려진 모든 시그널이름 목록을 보여준다.

-q

프로세스가 전혀죽지 않았어도 불평하지 않는다.

-v

시그널이 성공적으로보내졌다면 보고한다.

-V

버전 정보를 출력한다.

-w

모든 죽여진 프로세스들이죽도록 기다린다. killall 1 초에 한번씩 죽여진프로세스들이 여전히 존재하는지 검사해서 아무것도 남지 않게 될 때 반환한다. killall 는 시그널이무시되거나, 영향이 없을 경우, 프로세스가 좀비 상태에 머무르게될 경우에 영원히 기다릴 수도 있음에 유의하라.

 

사용 예

# killall httpd
# killall -HUP -v xinetd

 

알려진 버그들

파일에 의해서죽이는 것은 실행 중에 개방된 실행파일에 대해서만 동작한다. , 순수실행파일이 아닌 것은 이런식으로 죽일 수 없다.

killall name 을 치는 것은 리눅스가 아닌 시스템에서는 원하는 결과를 얻지 못할지도 모른다는 것에 유의하라. 특히특권을 가진 사용자일 경우에 더욱 유의하라.

killall -w 는 검색하는동안 어떤 프로세스가 없어지고 같은 PID를 가진 다른 프로세스로 치환되더라도 탐지하지 못한다.  

 

 

tty

현재 사용하고있는 단말기 장치의 경로명과 파일명을 보여줌

 

21. fsck (filesystem check)

파일 시스템의 상태가 올바른지 검사하고, 잘못된 것이 있으면 바로 잡는다.

option 

- a : 검사도중 발견된 에러를 자동적으로 복구한다.

- r : 검사도중 에러가 발견되면 복구 여부를 물어본다.(사실 사용되지 않는다.)

- s : 순차적인 방법으로 검색한다.

- V : 검색 중 각종 정보를 자세하게 보여준다.

- N : 실제로 검사 작업을 하지는 않도록 한다.

#fsck –a /dev/hda1

 

22. init 

  부팅이 될 때 어떤 환경으로 설치할지를 선택하는 것으로 여기서 runlevel이라는것은 실행 단계라고 한다. 실행 단계는 0~6까지의 단계로나뉘어 있다.

#int 0~6(runlevel)

 

23. jobs

현 터미널에서 수행된 작업들을 간략하게 나열해 준다.

optoin      -i : 프로세서 번호를 추가해서 보여준다.

 

24. time [명령어]

프로그램이 수행되는데 걸리는 시간을 미리 측정하여 보여준다.

 

25. service

/etc/init.d/ 에 있는 script를실행하는 명령어

#service network start

 

사용자 관리 명령어

 

1. chgrp

파일의 그룹 소유권을 바꾼다.

option

-c : 실제로 소유자가 바뀐 파일에 대해서 자세하게 설명

-f : 소유권을 바꿀 수 없어도 에러 메시지를 나타내지 않는다.

-v : 소유권의 이전에 대해서 자세히 기술한다.

-R : 디렉토리와 그 내용 파일들의 소유권을 재귀적으로 모두 바꾼다.

 

2. chmod

  파일의 모드를 바꿀 때 사용하는데 파일의 모드는 권한(permission)을제어한다.

option 

-c : 실제로 파일의 권한이 바뀐 파일만 자세히 기술한다.

-f : 파일의 권한이 바뀔 수 없어도 에러 메시지를 출력하지 않는다.

-v : 변경된 권한에 대해서 자세히 기술한다.

-R : 디렉토리와 파일들의 권한을 재귀적으로 모두 바꾼다.

* r(read 읽기), w(write 쓰기), x(execute 실행) 3가지권한이 있는데, 각 단위당 2진법으로 표현된다. 따라서 읽기, 쓰기, 실행등의 모든 권한을 주려면, 4+2+1, 따라서 합계 7이된다. 만약 모든 그룹의 권한을 다 허용해 줄 경우, 777이 된다.

우선 권한을 보기위해, ls-al을 쳐보면 wow 라는 파일이 rw-r--r--로되어있다는 것을 알 수 있다. 여기서, 첫 번째 3자리는 소유자, 두 번째 3자리는그룹, 마지막 3자리는 타인에게 허용할 것인지 여부를 보여주는것이다. 여기서의 소유자는 읽고 쓰기가, 그룹과 타인은 읽기만허용이 되어있다. 모두가 사용할 수 있게 하려면 777이된다.

#chmod 777 wow

상세

 

3. chown

  파일의 소유권을 다른 사람에게 변경할 때 사용한다.

option 

-c : 실제로 파일의 소유권이 바뀐 파일만 자세히 기술한다.

-f : 파일의 소유권이 바뀔 수 없어도 에러 메시지를 출력하지않는다.

-v : 변경된 소유권에 대해서 자세히 기술한다.

-R : 디렉토리와 파일들의 소유권을 재귀적으로 모두 바꾼다.

파일의 소유권을 다른 사람에게로 바꾸는 것은 슈퍼 유저만이할 수 있다.

root/에 있는 wow라는파일을 test라는 그룹으로 소유권을 바꿀 때

#chown test/root/wow

 

5. 시스템의 사용자 정보에 대한 명령어

finger

  시스템을 사용하고 있는 사용자들의 이름과 주소등 신상 명세를 출력한다.

변경할 때는chfn(change finger name)을 사용하면 된다.

 

id (identification)

사용자의 개인 id 와그룹의 id 번호를 출력한다.

 

logname

  로그인해 있는 사용자의 이름을 출력한다.

 

uptime

  현재의 시간과 로그인 시간의 총합, 평균적인 시스템 사용 현황을 출력한다.

 

w (who is logged onand what they are doing)

  로그인 되어있는 사람과 현재 실행중인 작업의 종류를 출력한다. 사용자를 명시하지 않으면 접속된 모든 사용자의 정보를 보여준다.

 

who

시스템을 사용하고 있는 사용자들의 이름과 터미널 번호, 로그인시간 출력한다.

-u : 현재 시스템에 누가 로그온되어 있는지 보여준다.

-T : 사용자의 터미널이 메시지를 보낼 수 있는지를 알려준다. +는 메시지를 쓸수있고,

     -는 그렇지 않음을 보여준다.

-b : 부팅한 시점을 표시한다

 

 

whoami

가상 콘솔기능을 사용하거나 여러명의 사용자로 동시에 로그인해 있을 때, 현재 시스템을 사용하고 있는 자신이 누구인가를출력한다.

 

whoami는 유효사용자ID, EUID(Effective UserID)를 확인하는 명령어이다
"id -un"
과 동일한 결과를 얻을 수 있는 명령이며, 현재 사용권한에대한 EUID를 확인하고자 할 경우에 사용하며 쉘프로그램등에서도 많이 사용된다.

 

users

현재 접속한사용자들의 id를 보여준다.

 

 

 

 

Network 관리 명령어

 

1. IP 설정하기

. 방법 1(x-window상에서 설정)

#setup (또는 netconfig)하면 설정 창이 나옴. 네트워크 설정을 선택한 후 IP 변경하면 됨.

 

. 방법 2(eth0를 설정할 경우)

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]

DEVICE=eth0

BROADCAST=192.168.30.255

HWADDR=00:0c:29:30:60:5d

IPADDR=192.168.30.1

NETMASK=255.255.255.0

NETWORK=192.168.30.0

ONBOOT=yes

GATEWAY=192.168.30.254

TYPE=Ethernet

USERCTL=no

IPV6INIT=no

PEERDNS=yes

여기서 BROADCAST, IPADDR, NETMASK, NETWORK, GATEWAY를 수정함.

 

. 수정 후 재부팅 없이 변경된 IP를 적용하려면

#/etc/init.d/network restart 하면 된다.

 

2. ifconfig 

Interface NIC(NetworkInterface Card)를 세팅하는 것입니다.여기서는ifconfig유틸러티를 사용하여 어떻게 IP address, netmask, gateway등을설치하는지를 알보도록 하겠습니다.

#ifconfig [interface]

ifconfig interface[atype] options | address...

option

up : interface를 활성화 시킵니다

down: interface를 비활성화 시킵니다.

address :[aaa.bbb.ccc.ddd]의 모양을 가집니다.

 

3. wget

Wgetis a computer program that implements simple andpowerful content retrieval from web serversand is part of the GNU Project. Its name is derived from WorldWide Web and get,connotative of its primary function. It currently supports downloading via HTTP, HTTPS, and FTP protocols, the most popular TCP/IP-based protocols used for webbrowsing.

 

웹상에 올라와있는 동영상이나 플레쉬.. 등등 퍼오는 프로그램

wget 을 이용해서 페이지에 대해 링크된 파일만 가져올려면

다음과 같이 하면 된다.
1.
기본적인 사용방법
wget [
가져오고자하는 파일]
예를 들어서 ftp.kde.org/kde.rpm 을 가져오고 싶다면
wget ftp://ftp.kde.org/kde.rpm

2.
매칭되는 모든것을 받기
XFree
로 시작되는 모든것을 받고 싶을때는
wget ftp://ftp.kde.org/XFree*

3.
하위 디렉토리 까지 받기
Linux
의 하위 디렉토리를 다 받기 위해서는
wget -r ftp://ftp.sunet.se/pub/Linux/

웹도 동일하게 적용 됩니다.
kr.php.net
을 다 받을려면
wget -r http://kr.php.net

4.
파일에 링크된 것까지 가져오기
wget -r -l 1 http://domain/file.html
이렇게 하면 file.html 에 링크된 파일들을 가져온다.
여기서 -r --recursive 이고 -l # 은 반복할 레벨을 뜻한다.

5.
파일을 다른이름으로 저장하기
file.html
new_filename 로 받고 싶다면
wget -O new_filename http://domain/file.html
or
wget --output-document=new_filename http://domain/file.html
-O(
대문자) 는 다른이름으로 저장할때 사용한다. 또는 --output-document 옵션을
사용하면 된다.
########################
#
그외 옵션

########################
-l depth :
-np :
링크된 파일 중 상위디렉토리에 있는 것은 빼고(no-parent)
-A html,htm : html, htm
형식의 파일만
-L :
상대주소를 이용한 링크들만(reLative)
-q :
메세지를 전혀 나오지 않게 하기(quiet)
-nv :
쬐끔만 나오게 하기(non-verbose)

########################
# index.html
만 가져오기
########################
wget -r -l 0 -L -np -A index.html -nv
http://search.nate.com/directory/Computer/

 

4. host 등록

/etc/hosts 파일에 다음과 같은 형식으로 등록한다.

1.1.1.1     kimhs    kimhs.kimhs.co.kr

등록 후 텔넷 접속을 별칭을 이용해서 다음과 같이 한다.

#telnet kimhs

 

별칭을 이용하려면 전제 조건이 있다. 바로 /etc/sysconfig/network 파일에 설정해야함.

이 파일은 네트워크를 사용할 수 있는지, 호스트 이름은 무엇이고, 게이트웨이의 주소는 어떤 IP를 사용하는지를 알려주는 일을 한다. 이 파일이 정상적으로 작동해야네트워크를 사용할 수 있다.

#more /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=kimhs.kimhs.co.kr

GATEWAY=192.168.1.1

 

5. 디폴트 게이트웨이 설정

route 명령으로도 할 수 있으며,

형식은 route add default gw 디폴트게이트웨이IP 나 호스트명
ex)
[root@sunny /root]# route add default gw 192.168.1.254   
또는
[root@sunny /root]# route add default gw router1.kerygma.co.kr

 

라우터 명령으로 디폴트 게이트웨이를 추가 할 경우 시스템을 재부팅시킬 경우 다시입력해주어야 한다. 이러한 경우 재부팅해도 게이트웨이가 바뀌지않도록, netcfg netconf 를 이용하여 디폴트 게이트웨이를 추가 하면 되고, 만일 이러한 프로그램이 설치되지 않은 시스템에서는 /etc/sysconfig/network 파일을 직접 편집하면 된다.

GATEWAY=xxx.xxx.xxx.xxx 인터넷과 연결되어 있는 라우터의 IP
GATEWAYDEV=
네트웍 디바이스(보통 하나의 랜카드를 가지고 있다면 eth0이 된다.)

ex)
[root@sunny /root]# more /etc/sysconfig/network
NETWORKING=yes
FORWARD_IPV4=”no”
HOSTNAME=”sunny.kerygma.co.kr”
DOMAINNAME=kerygma.co.kr
GATEWAY=”192.168.1.254”
GATEWAYDEV=”eth0”
NISDOMAIN=””

 

6. 리눅스에서 라우팅을 가능케 하려면,
/etc/sysconfig/network
파일의
FORWARD_IPV4=no
FORWARD_IPV4=yes 로 바꾸어 준다.


문 법
route add [xnet|-host] target [netmask <Nm>] [gw Gw] dev <If>
route del [-net|-host] target [gw Gw] [netmask Nw] [[dev] If]
route add default gw <Gw> dev <If>
IP routing table
정보를 보거나, routing table을 처리한다. 옵션 add del을사용해서 라우팅 테이블을 수정하거나 옵션 없이 사용하면 라우팅 테이블의 현재 내용을 볼 수 있다.

옵션

del : route
삭제
add : route
추가
target : network
또는 host의 목적지
-e : netstat format
으로 routing table을 출력한다.

사용방법 및 정보
[root@sense ~]#route
Kernel IP routing table
Destination    Gateway        Genmask                  Flags   Metric            Ref      Use    Iface
192.168.1.0        *                255.255.255.0          U        0                    0        0         eth0
169.254.0.0        *                255.255.0.0              U        0                    0        0         eth0
Default        192.168.1.1    0.0.0.0              UG       0                    0        0         eth0


각 필드에 대한 설명이다.
Destination : network
또는 host의 목적지를 말한다.
Gateway : gateway
주소나 ‘*’ 으로 표시된다.
Genmask :
목적지의 netmask가 지정된다.
Flags : U (route is up)
           H (target is ahost)
           G (use gateway)
           R (reinstate routefor dynamic routing)
           D (dynamicallyinstalled by daemon or redirect)
           M (modified fromrouting daemon or redirect)
           A (installed byaddconf)
           C (cache entry)
            !(reject route)
Metric :
경로 설정의 기준값, 최소 경로를best path로 하여 경로를 설정한다.
Ref :
라우트에서 참조하는 값 (리눅스 커널에서는 사용하지 않음)
Use :
라우트를 검사한 수 xF or xC 옵션을 이용하여 miss or hits 를 나타낼 수 있다.
Iface :
라우트에서 패킷을 보낼 interface

사용예제
[root@sense ~]# route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
192.168.1.x
네트워크의 라우트를 eth0에 추가한다.
[root@sense ~]# route add default gw 192.168.1.1
192.168.1.1
gateway로 추가한다.
[root@sense ~]# route add default gw 192.168.2.1 dev eth0 metric 1
192.168.2.1
gateway로 추가하되metric을 다르게 준다.

 

7. DNS 서버 설정하기

리눅스머신에서 인터넷을 사용할 때도 DNS 설정을 해주어야 한다.

 

/etc/resolv.conf 파일에 사용하는 네임서버의 IP를 적어주면 된다.

nameserver 164.124.101.2

 

* 물론, 네임서버도 호스트명을가지고 있다.
보통 “ns.도메인의 형식으로 사용하지만, 그것은 내부적인 관리를 위해서 주어지는 이름이고, 클라이언트에서의 DNS 설정에서는 호스트명(FQDN)을 적지 않는다.

보통의 경우 ISP에서 라인을 임대하여 사용하는 곳이나, 전화 접속으로 인터넷을 사용하는 곳에선 ISP에 있는 네임 서버를이용하여 TCP/IP 기반의 네트웍인 인터넷을 사용할 수 있다. 하지만, 독자들이 다니고 있는 학교나, 회사 같은 곳에서도 네임 서버를 구축해놓고사용하는 곳이 있을 것이다. 중규모 이상의 네트워크에서는 ISP의네임 서버를 사용하는 것보다, 학교나 사내에 네임 서버를 직접 운용하는 것이 네트워크가 바뀌거나 호스트가추가될 때 더 능동적으로 대처할 수 있다는 장점이 있다.
물론, 리눅스를 named를 이용하여 네임 서버로사용할 수 있다.

 

8. TCP/IP와 관련된 데몬

Linux TCP/IP 네트워크 서비스는 많은 데몬에 의해서 지원된다. 이들은 백그라운드로 실행되며, 직접적으로 서비스를 지원하거나 다른네트워크 프로그램에 의해서 사용되어지는 테이블을 관리한다. 다음은 가장 중요한 데몬들이다.

 

inetd

internetservices daemon은 주요 TCP/IP 서버이며, 이것이 대부분의 네트워크 수행을 감독하는 책임을지고 있다. 또한, 하나의 구체적인 작업을 하는 다른 데몬의 호스트를 감독함으로써 자신의 업무를 수행한다. inetd에 의해서 관리되는 서버들은 /etc/inet.conf 파일에기술되어 있고, telnet, ftp, rlogin, rsh, rcp, finger 명령어들뿐만 아나라 pcnfs와 원격 talk를 포함한다.
*
관련된 명령어

telnet (가장 일반적으로 쓰이는 rloin의 형태이다.), ftp

finger : 로컬이나 원격의 사용자 정보(마지막 로긴 시간, 로긴 위치, 메일도착 여부)를 얻을 수 있다.

 

named

앞서 /etc/hosts 파일은 TCP/IP에 의해서 통신되는 모든 호스트들을 기술하고 있다. 이것의기능은 name daemon에 의해서 지원 받게 된다. named가수행되는 중이라면 /etc/hosts 근거리 네트워크상의 호스트들과 자주 접근하는 호스트들에 대한 정보를가지고 있다. 따라서 사용자의 호스트가 /etc/hosts에기술되지 않은 시스템의 주소를 필요로 했을 때 그 주소를 위해서 named를 참조할 것이다.

 

routed gated

route demon gateway routing daemon은 데이터의 어느경로로 전송할지를 정할 때 사용되어지는 네트워크에 대한 동적인 정보를 관리한다. 이것은 부트 과정에서많은 route 명령에 의해서 만들어지는 정적인 라우팅 테이블을 대체하게 설계되어진다. 이들 두개의 데몬 만이 하나의 시스템에서 수행되고, routed는더욱 새로운 gated에 서서히 자리를 넘겨주고 있다.

 

rwhod

remote who daemon은 주기적으로 네트워크에 있는 모든 호스트에게 공중방송(broadcast)정보를 발송하는 프로그램이다. 이 데몬이 전송하는 정보는 누가 이 호스트에 로그인 했는지를, 얼마나 오랫동안 로그인 했는지 등의 상황을 알려주는 것들이다. 사용자들은 rwho ruptime 명령을 가지고 원격 시스템의 상태를 알 수있다.

 

불필요한 데몬의 비활성화

시스템 보안이나 성능 측면에서 몇몇 TCP/IP 데몬을 비활성화(disabling)할 수 있다.(각각은 정말 작지만 시스템에서 측정할만한 부하를 갖는다.) 당연히특정 데몬들을 제거시키기 위한 일련의 순서가 있다. 만약 rwhod를비활성화하면 rwho ruptime 명령은 작동되지 않는다. named를 비활성화하면 /etc/hosts는 사용자 시스템이 TCP/IP를 통해 통신하는 네트워크상의 모든 호스트를 기술해야만 한다.routed gated  비활성화한다면, 라우터끼리의 라우팅 테이블을 교환하는데 쓰이는 RIP을사용할 수 없고 단순히 정적인(static) 라우팅 테이블을 만들어야 한다. inetd를 비활성화하면 TCP/IP는 작동되지 않는다.

 

ftp 전용명령어

 

ftp모드에서 사용할 수 있는 전용명령어는 일반 유닉스 명령어와 별도로 존재합니다.

, ftp로접속했을 때 사용할 수 있는 명령어를 확인해 보려면 ftp>?을 입력해 보면 ftp명령어 리스트가 디스플레이됩니다.

또한"ftp>? 명령어" 형식으로 해당명령어의 도움말을 볼 수 있습니다.

다음은 이들 ftp명령어중자주 사용하는 명령어에 대한 설명입니다.

ftp명령어는 시스템에 따라 아주 조금씩의 차이는 있습니다.

 

ascii : 전송모드를 ASCII모드로 설정한다.(ascii또는 as)

binary : 전송모드를 BINARY모드로 설정한다.( binary또는 bi)

bell : 명령어 완료시에벨소리를 나게한다.(bell)

bye : ftp접속을 종료하고빠져나간다.(bye)

cd : remote시스템의 디렉토리를 변경한다.(cd 디렉토리명)

cdup : remote시스템에서 한단계 상위디렉토리로 이동한다.(cdup)

chmod : remote시스템의파일퍼미션을 변경한다.(chmod 755 index.html)

close : ftp접속을종료한다. (close)

delete : remote시스템의 파일을 삭제한다.(delete index.old)

dir : remote시스템의 디렉토리 내용을 디스플레이한다.(dir)

disconnect : ftp접속을종료한다.(disconnect)

exit : ftp접속을 종료하고빠져나간다.(exit)

get : 지정된 파일하나를가져온다.(get index.html)

hash : 파일전송 도중에 "#"표시를 하여 전송중임을 나타낸다.(hash)

help : ftp명령어도움말을 볼 수 있다.(help또는 help 명령어)

lcd : local시스템의디렉토리를 변경한다.(lcd 디렉토리명)

ls : remote시스템의 디렉토리 내용을 디스플레이한다. (ls 또는 ls-l)

mdelete : 여러개의 파일을한꺼번에 지울 때 사용한다.( mdelete *.old)

mget : 여러개의 파일을한꺼번에 가져오려할 때 사용한다. ( mget *.gz)

mput : 한꺼번에 여러개의파일을 remote시스템에 올린다.(mput *.html)

open : ftp접속을 시도한다.(open 168.126.72.51또는 open ftp.kornet.net)

prompt : 파일전송시에확인과정을 거친다. on/off 토글 (prompt)

put : 하나의 파일을 remote시스템에 올린다.(put index.html)

pwd : remote시스템의 현재 작업디렉토리를 표시한다.(pwd)

quit : ftp접속을 종료하고빠져나간다.(quit)

rstatus : remote시스템의상황(version, 어디서, 접속ID)을 표시한다.(rstatus)

rename : remote시스템의 파일명을 바꾼다.(remote 현재파일명 바꿀파일명)

rmdir : remote시스템의 디렉토리을 삭제한다.(rmdir 디렉토리명)

size :remote시스템에있는파일의 크기를 byte단위로 표시한다.(size index.html)

status : 현재 연결된 ftp세션가지 모드에 대한 설정을 보여준다.(status)

type : 전송모드를 설정한다.(type 또는 type ascii 또는 type binary) 

 

1. FTP 서버에접속하기
방법 1 : ftp (도메인 네임) 혹은 (IP)를 입력한다.
) ftp ftp1.netscape.com
방법 2 : ftp 후에 프롬프트가 “ftp>”로뜨면 “open (도메인 네임) 혹은 (IP주소)”를 입력한다.
) open ftp1.netscape.com
프롬프트가 “ftp>”인 상태에서 여러 가지 명령을 입력할 수 있다.


2.
디렉토리(Directory) 보기와바꾸기
FTP
서버에서 자료는 디렉토리 구조에 따라서 정리되어 있다. 따라서 사용자의 컴퓨터에서처럼
디렉토리의 내용을 보거나 원하는 디렉토리로 바꾸는 등의 작업이 필요하다. 이 작업들은
“ftp>”
프롬프트 상태에서 “ls”명령어로 확인하고, ”cd” 명령어를 사용하여 바꿀 수 있다.
ls : list
라는 의미로 FTP서버의 디렉토리 구조를 보여 준다. ) ls -al (list all)
cd (
디렉토리) : Change Directory의 약자로 원하는 디렉토리로 이동한다. ) cd hnc


3.
전송 모드
FTP
에는 아스키(ASCII)와 이진(Binary)라는두 가지 전송 모드가 있다.
ASCII :
일반적인 텍스트 문서 전송
BINARY :
그림이나 실행파일 등 모든 형식 파일 지원
모드 전환
: ascii : ASCII
전송 모드로 바뀜
: bin :
이진 모드로 바뀜. 일반적으로 이진 모드를 사용하는 것이 편리하다.


4.
파일 받기
파일 받기 명령은 get mget이 있다.
get
파일명 예) get test.doc
:
파일이름으로 지정된 파일을 전송 받으므로 정확한 이름(Full Name)을 저정한다.
mget
파일명 예) mget *.doc
: Multiple get
의 뜻을 가지고 있으며 여러 개의 파일을 동시에 전송받을 때 사용한다.
  
명령어. 파일이름 부분에서는‘*’, ’?’과 같은 만능문자(Wild Card)
  
사용할 수 있다.


5.
파일 보내기
파일을 보내는 경우에는 받는 경우와 달리 계정이 필요한 경우가 많다. 일반적으로
  anonymous
계정은 특정한 디렉토리를 제외하고는 쓸 수가 없으며 이는 바이러스
  
등의 침입을 막기위한 것이다. 파일을 전송할 때에는 put mput명령어를 사용한다.
put
파일명 예) put test.doc
:
파일이름으로 지정된 파일을 전송하므로 정확한 이름(Full Name)을 입력한다.
< mput
파일명 예) mput *.doc
: Multipe put
의 뜻을 가지고 있으며 여러 개의 파일을 동시에 전송할 때 사용하는
  
명령어이다. Mget처럼 파일이름 부분에서 ‘*’,’?’ 과 같은 만능문자 사용도 가능하다

[출처] 텔넷 에서 FTP 리눅 명령어정리 |작성자 buzing

 

RPM 사용법

RPM(RedhatPackage Manager)이라는 프로그램 설치 관리 도구가 등장하기전까지 리눅스에서 프로그램을 설치하거나 업그레이드하는 것은 무척이나 골치아픈 일이었다. 그러나 RPM을 이용하면 프로그램의 설치,제거,업그레이드,정보 열람 등을 간편하게 할 수 있다. RPM은 어떤 프로그램에 필요한 파일들을 함께 묶어놓은 것으로 보통 패키지(package)라고하며, 확장자는 '.rpm'이다.

 

기본모드

1. 설치(install)

2. 제거(uninstall)

3. 업그레이드(upgrade)

4. 질의(query)

5. 검증(verify)

 

패키지 이름

ex)package-2.1.5-2.i386,rpm

package: 패키지 이름

2.1.5: 버전번호

2 : 릴리즈 번호

i386 :아키텍처

 

옵션

-i : 설치옵션이며, 이전 버전이 설치되어 있을경우 설치하지 않는다.‘

-U : 이전 버전이 설치되어 있다면 업그레이드를 하고 설치되어 있지 않다면 새롭게 설치를진행한다.

-F : 이전 버전이 설치되어 있을 경우에만 설치하고 설치되어 있지 않다면 설치하지 않는다.

-v : 설치 중 메시지를 출력한다.

-e : 패키지를 제거한다.

-q : 패키지가 설치되어 있는지 검색한다. 설치되어있다면 패키지 이름과 버전을 출력한다.

-qa : 현재 설치된 모든 패키지 목록을 찾는다.

-qi : 현재 설치된 패키지의 간략한 정보를 출력한다.

-ql : 현재 설치된 패키지의 간략한 정보와 설치된 파일을 출력한다.

-Vf : 현재 설치된 파일을 검증한다.

-Va : 전체 패키지를 검증한다.

-Vp : 한 패키지만 검증한다.

--force: 패키지가 설치되어 있거나 충돌이 일어나는 것을 무시하고 설치한다.

--nodeps : 의존성 문제를 무시하고 설치하거나 삭제한다.

 

설치/업그레이드/삭제

패키지를 설치하려면: rpm -ivh

..rpm -ivh 패키지.1.1-4.i386.rpm

 

패키지를 업그레이드하려면: rpm -Uvh [파일 이름]

.rpm -Uvh 패키지.1.1-5.i386.rpm

 

패키지를 제거하려면: rpm -e [패키지 이름]

.rpm -e 패키지

어떤 패키지를 업그레이드하거나 설치할 때에는그 패키지가 설치되게 하기 위해서 추가적인 플래그(flag)가 필요할 수도 있다. 그러나 이들 플래그에 대해 정확히 알고 있을때만 사용하는 것이 좋다.--force는 패키지를 다시 설치한다. --nodeps는 설치하고자 하는 패키지가 필요로하는 다른 패키지가  아직 설치되지않았더라도(의존성 검사를 하지않고) 일단 설치한다.

 

설치 정보 검색

rpm -q[패키지 이름]

패키지가 설치되었는지 알아 보기 위해서는

.rpm -q 패키지

 

rpm-qi [패키지 이름]

설치된 패키지의 정보를 얻기 위해서는

.rpm -qi 패키지

 

rpm-ql [패키지 이름]

패키지에 어떤 파일들이 속해 있는지 보려면

.rpm -ql 패키지

 

rpm-qf

특정 파일이 속해 있는 패키지가 무엇인지알아 보려면

. rpm-qf /usr/bin/some_executable

 

rpm-qc [패키지 이름]

패키지 설정 파일 검색

 

그 외-q 옵션과 같이 올 수 있는 옵션

-F :
    -f
와 같은 기능이지만 표준 입력으로 부터 파일명을읽는다.

그러니까   ls /usr/bin | rpm -F 이런식으로 사용한다.
-p <
패키지 파일> :
   
패키지 파일에 대한 질문을 한다.
-P :
    -p
와 같은 기능이지만 표준 입력으로 부터 파일명을 읽는다. ^^
-R :
   
패키지가 의존하고 있는 파일 또는 패키지 목록을 보여준다.
-s :
   
패키지에 속한 파일들의 상태를 보여준다.
-d :
   
문서 화일만 보여준다.
--scripts :
   
설치,  제거 과정에 사용되는 쉘 스크립트가 있다면 그내용을     출력한다.

 

여러 가지 질의 명령을 함께 쓸 수 있기때문에, rpm -qil은 패키지 정보와 그 패키지 안에 있는 모든 파일 리스트를 보여준다.

 

설치되지 않은 rpm 파일 이름을 보려면, 질의 라인에 p 태그를 붙이면 된다.

.rpm -qilp 패키지.1.1-4.i386.rpm

패키지 정보와 이 패키지 안에 담겨 있는파일들의 리스트를 보여준다.

좀 더 고급 사용법은 rpm man 페이지와 웹 사이트ftp.rpm.org에서 볼 수 있다.

 

확인

시스템 상의 어떤 파일들이 초기 설정으로부터 변경되었는지 RPM을 이용해서 알아 볼수 있다. rpm -Va 는 관련된 패키지가 설치된 이후 변경된 모든 파일들의 리스트를 보여준다. 이 리스트에는 수 많은 파일들이 포함될 수 있다(그리고 그 이후의설치 작업 때문에 또 많이 변경되었을 수 있다).

 

어떤 패키지가 변경되었는지 일단 확인 한다음 좀 더 개별적으로 확인하기 위해서는, 다음 명령을 이용할 수 있다

 

 rpm -Va | awk '{print $2}' | xargs rpm -qf |sort -u &> /tmp/file1

 

이렇게 해서 일단 변경된 패키지가 어떤것인지 알아 본 후, 그 이후에 변경된 파일이 어떤 것인지를/tmp/file1에서 찾아 보면 된다.

 

서명 확인

# rpm-K Nessus-4.4.1-fc14.i386.rpm

Nessus-4.4.1-fc14.i386.rpm:sha1 md5 확인

 

 

Source

source 명령은 bash의 내부 명령어입니다. ,명령어가 따로 존재하는 것이 아니라, bash에 포함되어 있는 명령어이기 때문에 bash 쉘이 작동중일 때만 동작합니다. 만약 다른 쉘을 사용하시면사용 불가능 합니다. 그리고 source 명령어 대신 . 을 사용하셔도 같은 역할을 합니다.

source
또는 . 은 후행되어 오는 파일을 읽어서 파일 속의 내용을 실행하는 역할을 합니다.
. source로 실행할 파일내에는 bash에서 사용할 수 있는 명령을 사용해야 한다는 말이지요. 만약bash에서 사용할 수 없는 명령을 사용할 경우 에러메세지를 띄우면서 종료되어 버립니다.

자신의 계정 아래에 있는 .bashrc 파일을 본다면.bashrc 파일의 내용을 수정한 후에는 logout 했다가 login 해야지만 그 파일의 내용이 적용되게 되어 있습니다. 하지만 source 명령을 이용한다면 바로 적용이 가능하지요.

# source .bashrc
또는
# . .bashrc

 

 

chcon

chcon은 파일의 보안 문맥을 변경할 때 사용하는명령(change contexts)

: selinux 서비스 설정

-r : 파일 보안 문맥 중 역할(role) 필드를 변경

-t : 파일 보안 문맥 중 유형(type) 필드를 변경

-u : 파일 보안 문맥 중 신분(identify) 필드를 변경

-R : 하위 디렉터리의 파일과 디렉터리에 대해 보안 문맥을 적용

-h : 심볼릭링크를 따르지 않도록 한다

 

보안 문맥이란?

SELinux(SecurityEnhanced Linux)가 활성화 되면 현재 로그인해 있는 사용자정보, 실행 중인 프로세스 목록, 파일 시스템 안의 파일목록에 보안과 관련된 속성이 추가되는데, 이것을 보안문맥(securitycontexts)라 한다. 보안문맥은각 명령의 –Z 옵션을 통해 확인할 수 있다.

#ls -Z

 

 

설치확인

rpm-qa | grep ethereal

 

stat

파일의inode 정보를 볼 수 있다.

파일시스템은 파일을 다루는 데 필요한 모든정보를 inode라는 자료구조를 이용한다.

파일시스템은 파일을 inode로 구별한다.

[root@fedora tmp]# stat test

  File: `test'

  Size: 14              Blocks: 16         IO Block: 409 일반 파일

Device: fd00h/64768d    Inode: 1540152     Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2010-05-28 18:48:59.000000000 +0900

Modify: 2010-05-28 18:48:55.000000000 +0900

Change: 2010-05-28 18:48:55.000000000 +0900

 

 

last

로그인 및 reboot 정보 출력

lastsearches back through the file /var/log/wtmp (or the file designated by the -fflag) and displays a list of all users logged in (and out) since that file wascreated. Names of users and tty's can be given, in which case last will showonly those entries matching the arguments. Names of ttys can be abbreviated,thus last 0 is the same as last tty0.

 

 

lastlog

사용자 별로 최종 로그인 정보 출력

 

 

dmesg

부팅 시 메시지 확인

 

 

env

현재의 환경 변수, 혹은 그 값을 바꿔 프로그램이나 스크립트를 실행 시킵니다(시스템 전체 환경은 건드리지 않습니다). [varname=xxx] 옵션을주면 스크립트가 실행될 동안에만 환경 변수 varname의 값을 바꿔줍니다. 아무 옵션도 안 주면 현재 세팅되어 있는모든 환경 변수를 보여줍니다.

참고Bash나 본쉘에서 파생된 다른 쉘들에서는 단일 명령어 환경에서 변수를 설정하는 것이 가능합니다.

env var1=value1 var2=value2 commandXXX

# 'commandXXX' 의 환경에서만 $var1 $var2 를 설정.

작은 정보스크립트의 첫번째줄("#!"가 있는 줄) env써서 경로를모르는 쉘이나 명령어 해석기를 지정해 줄 수도 있습니다.

#! /usr/bin/env perl

 

print "펄이 어디에 있는지 몰라도\n";

print "이 펄 스크립트는 잘 동작할 것입니다.\n";

 

# 펄 실행 파일이 원하는 곳에 없을 수도 있기 때문에

# 이식성 있는 크로스 플랫폼용 스크립트에 아주 좋습니다.

# Thanks, S.C.


로컬 변수 확인

# set

로컬 변수 생성

# 변수=값


global 변수 확인

# printenv 또는 env

global 변수 생성

# export 변수


환경 변수 삭제

# unset 변수 


 

declare

env와 함수를 출력한다.

#declare -f

 

 

readelf

ELF(Executable and Linking Format) 형식의 파일의 내용을 보여 준다

 

 

ldd(List Dynamic Dependencies)[출처] ELF(Executableand Linking Format)|작성자 토마토

특정 바이너리 파일의 공유 라이브러리(Shared Library)를 사용하고 있는 목록을 보여줌

#ldd/bin/ls

 

 

tar

[기본 사용법]

- 파일묶기      : tar cvf 파일명.tar파일(디렉토리)

- 묶은파일보기  : tar tvf 파일명.tar

- 묶은파일풀기  : tar xvf 파일명.tar

 

[tar의 주요옵션]

-c :tar파일을 생성할 때(여러개의 파일을하나의 파일로 묶을 때) 반드시 사용

-t :tar파일의 내용을 확인하고자 할 때 반드시 사용

-f :tar파일을 사용할 때에는 반드시 사용

-p :tar파일을 생성할() 때 원본 파일속성(퍼미션,소유자등)을 그대로 유지함.

-v : 묶을 때나 풀 때 그 과정을 자세하게 보려고 할 때 사용

-z :gzip(gunzip)과 관련하여 압축이나 해제를 한꺼번에 하려고할 때 사용

-j :bzip2(bunzip2)과 관련하여 압축하거나 해제하는 옵션으로사용

-x : 풀 때 사용

 

[gzip(gunzip)과 함께 사용하는법] : 실무적인 사용#1

- 묶고압축하기          : tar zcvf 파일명.tar.gz 파일(디렉토리)

- 묶고압축된 파일 보기  : tar ztvf 파일명.tar.gz

- 묶고압축된파일 풀기   : tar zxvf 파일명.tar.gz

 

- 퍼미션유지묶고압축하기          : tar zcvfp 파일명.tar.gz 파일(디렉토리)

- 퍼미션유지묶고압축된 파일 보기  : tar ztvfp 파일명.tar.gz

- 퍼미션유지묶고압축된 파일 풀기  : tar zxvfp 파일명.tar.gz

 

[bzip2(bunzip2)과 함께 사용하는법] : 실무적인 사용#2

- 퍼미션유지묶고압축하기          : tar jcvfp 파일명.tar.bz2 파일(디렉토리)

- 퍼미션유지묶고압축된 파일 보기  : tar jtvfp 파일명.tar.bz2

- 퍼미션유지묶고압축된 파일 풀기  : tar jxvfp 파일명.tar.bz2

 

 

scp

SSH에서다른 서버로 파일을 전송 하고자 할때 SCP 를 이용하여 전송 할 수 있습니다.

# scp [전송할파일 또는 디렉토리] [파일이 전송될 서버:저장될 디렉토리]

 

# scp /home/test.tar.gzroot@192.168.1.1:/home

 

SSH 22번 포트가 아닐 때 -P 옵션을 사용하여 포트를 지정 해 줄 수있으며 -r 옵션으로 디렉토리의 하위 파일까지 전송이 가능합니다. 

 

# scp -P 2222 -r/home/test.tar.gz root@192.168.1.1:/home

 

 

export

#export [환경변수]=[]

환경변수를 편집한다.

"환경변수(environmentvariable)"란 어떤 프로그램 하나가 아니라, linux OS 환경에서 사용되는변수를 말합니다. linux OS 환경전체에대한 전역변수라고 생각하시면 됩니다.
그러니까, 모든 프로그램에서 읽고 쓸 수가 있습니다.

 

export명령은 환경변수를 지정, 변경하거나 현재 정의되어 있는 환경 변수를 보여주는 명령이다. 환경 변수를 변경함으로써 명령 프롬프트에서 실행한 프로그램에영향을 미치게 된다. 다만 export 명령에 의해변경된 환경 변수는 export 명령을실행한 사용자의 로그아웃 전까지만 유효하며 영구적으로 변경하기 위해서는 환경 변수를 정의하는 설정 파일(/etc/profile) 을 직접 수정해야 한다.

 

#export PATH=$PATH:/usr/local/java/bin

환경변수PATH의 기존내용에 /usr/local/java/bin을 추가

# unset PATH

환경변수PATH 값을 삭제한다.

 

환경변수 앞에 $를 둘 수 없다. 이유는 다음과 같다.

Youcan not use export $VARIABLE, because the shell would expand $VARIABLE to itscontent before calling export.

 

ldconfig

프로그램은 디폴트로 /etc/ld.so.conf파일을 읽어들여 동적 링크 디렉토리에
적절한 심볼릭 링크를 설정한 후, 나중에 다른 프로그램이 사용할 캐시를
/etc/ld.so.cache
에 작성합니다.

따라서 ldconfig DLL이추가될 때마다, DLL이 제거될 때 또는 DLL 
디렉토리들이 변경될 때 실행되어야 합니다.

 

 

strings

오브젝트 또는 이진 파일에서 정상적으로 출력 할 수 있는 문자열을 찾는 명령어

#strings/var/log/wtmp

 

 

fuser
특정한 파일이나 파일 시스템을 사용하고 있는 프로세스의 PID를보여주는 명령어

사용자나 특정 프로그램이 파일 시스템을 사용하는 경우에 강제로 종료하는
방법은 fuser 명령을 사용.
ps, netstat, lsof, pstree, tcpdump
만잘 이용하고, 능숙하게 다루신다면 
탑레벨 시스템관리자가 되지 않을까 조심스레 생각해 봅니다.


옵션 
(1) -k     
프로세스를 삭제합니다.

(2) -i
프로세스를 죽이기 전에 해당 여부를 묻습니다.
하지만, -k 옵션이 같이 사용 시 무시됩니다.

(3) -m
마운트된 파일시스템 혹은 블럭리스트를 지정합니다.
엑세싱되고 있는 프로세스들이 출력됩니다.
)
[root@ns1.oneday.co.kr ~]# fuser  -m/usr/local/apache/logs
/usr/local/apache/logs:  2875  2877  2878  2879  2880  2881  2882  2883  2884  2885  2886  6717  6718  6719  7936  8213  8653  8945  8946  8947  8948  8949  8950  8951  8952

(4) -n 
네임 공간(name space)입니다.  이것은파일이름이 될 수 있고, udp, local udp ports, tcp 가 지원됩니다.
포트에 대해서는, 포트 넘버 혹은 서비스 네임이 될 수 있습니다.
) 
[root@ns1.oneday.co.kr ~]# fuser  -n tcpsmtp
[root@ns1.oneday.co.kr ~]# fuser  -n tcp25 

(5) -u
PID
의 소유자 이름도 출력합니다.
)
[root@ns1.oneday.co.kr ~]# fuser  -um/home2/ 
/home2/:            30318 30318c 30318e(root) 30367 30367c 30367e(root)
           
-------------------------------------------------------------
실전 예 
(1) /home
디렉터리를접근하고 있는 모든 프로세스를 정지합니다.
[root@ns1.oneday.co.kr ~]# fuser -km /home

(2) cdrom
을강제로 umount할까요?
[root@ns1.oneday.co.kr ~]#  fuser -km/dev/cdrom

(3) tcp smtp
를사용중인 예 2가지
[root@ns1.oneday.co.kr ~]# fusersmtp/tcp   
smtp/tcp:            19434

[root@ns1.oneday.co.kr ~]# fuser -n tcp smtp
smtp/tcp:            19434

 

# fuser -cu /var 
하면 현재 /var라는 디렉토리를 사용하고 있는 유저나데몬의 process가 열거된다... 
그 열거된 pid를 보고 어떤 데몬이 사용하고 있고어떤 유저가 사용하고 있는지 알 수 있다.

# fuser -ck /var 
하면 /var라는 디렉토리를 사용하고 있는 유저나데몬의 process id 를 모두 'kill -9' 와같은 행동을 하게 된다.
그래서, 솔라리스2.7이하의 os 에서는 매우 유용하다

 

 

포그라운드와 백그라운드

일반적으로 프로세스가 종료될때까지 기다려야하는방식을 포그라운드이며

그반대가 백그라운드이다. 차이점은 &를 붙이느냐 안붙이느냐의 차이점

ksh은 설명과 같이 되지만, bash은 엔터를 치면 멈춰 버린다.

 

간단한예로

find 명령어를 통해 특정 파일을 찾을때 

 

# find /home -nameabc.html -print 

 

이상태로 커맨드를 실행하면 파일을 찾을때까진 기다릴수밖에 없다

그러나

 

# find /home -nameabc.html -print & 

[1] 4747     --- pid값을 출력하고 명령프롬프트가 사용가능

#

[1]+  Done    --- 명령어가 완료될때 출력

 

# jobs 

백그라운드 실행중인 프로세스 출력

 

# fg 

백그라운드 프로세스를 포그라운드로 변경

 

# bg

포그라운드 프로세스를 백그라운드로 변경 

 

# ctrl+z

포그라운드 프로세스를 잠시 멈춤 

fg로 포그라운드에서 다시 실행

bg로 백그라운드에서 다시 실행

 

# ctrl+c

포그라운드 프로세스 종료 시킴.

 

 

diff

diff   서로 다른 두 파일이나 폴더에 대한 비교 할 때 쓰는 명령어입니다.

명령어 위치/usr/bin/diff

사용형식 diff [옵션] 파일1 파일2
          diff [
옵션] 디렉토리1 디렉토리2
옵션 -brif : 단순비교
     -c    :
차이점 비교
     -d    :
상세 비교
     -l     :
주로 폴더에 사용하며, 서브디렉토리 까지 상세 비교 
diff3 => 3
개의 파일 비교 시 사용

틀린 부분만보여 준다.

# more a

1

a

# more b

1

b

# diff a b

2c2

< a

---

> b

 

 

cmp

cmp는 두 개의 파일을 비교하여 다른 점을 확인할 때 쓰는 명령어입니다.

 

#cmp(option) (file1) (file2)

 

옵션 -l : 틀린문자의 개수를 출력하고 각각의 틀린 문자에 대한 8 진수 값을 출력

    -s : 아무런 메시지를 보여주지 않고 종료 코드만을 넘겨줌

         종료 코드에서 0은 두 파일이 같음을, 1은파일이 다를 때,

         2는 파일에 접근할 수 없을 때를 의미

 

 

uniq

파일내의 연속되는 문장을 확인하여 반복 문장을 삭제하고 보여주는명령어

 

uniq 명령은 "Unique"의 약어로서 특정 파일내에서 같은 문장이 두 번 이상 연속되는가의

여부를 확인하거나 연속될 경우에 유일한 문장으로 만들어 주는역할을 한다.

 

uniq 명령어 사용시에 주의할 점은 특정 문장의 연속여부를 찾을 때에 파일 전체내에서

검색하는 것이 아니라는 점이다. 즉 두번 이상 연속되는 문장을 찾는 것이라는 점이다.

하지만, 사용옵션에 따라서는 조금씩 다를 수 있다.

 

 

# uniq [options] [파일명]

 

[options]

-c : 같은 라인이 몇 번 나오는지를 표시한다.
-d :
중복되어 나오는 라인 중 한 라인만 보여준다.
-D :
중복되는 모든 라인을 보여준다.
-N :
필터링은 무시할 라인을 정한다.
    
시작 라인부터 N번째 라인까지는 검사하지 않는다.
-i :
중복 라인을 한라인으로 생각하고 출력한다.
-u :
중복 라인이 없는 것만 보여준다.
-w N : N
번째 문자까지만을 비교대상으로 하여 uniq명령을 수행한다.
-s N : N
번째 문자까지는 비교대상에서 제외하여 uniq명령을 수행한다.
-f N : N
번째 필드를 비교대상에서 제외하고 uniq명령을 수행한다.

 

ex)

# more name

kimhs

kimhs

leejs

leejs

 

# uniq name

kimhs

leejs

 

# uniq -c name

2 kimhs

2 leejs

 

# uniq -w 1 -u name
# uniq -w 4 name

 

 

telinit

init를 가르키는심볼릭링크로서, 시스템 런레벨을 바꿀 때 쓰는데 보통은 시스템 관리나 긴급하게 파일시스템을 수리해야할 때 씁니다. 오직 루트만 이 명령어를 쓸 수 있습니다. 이명령어는 아주 위험하기 때문에 쓰기 전에 이 명령어를 잘 이해하고 있어야 합니다.

 

예를 들어 런레벨 5로 부팅된 상태에서 런레벨 3으로 바꾸고자 한다면 
# telinit 3 

 

 

od

od(8진 덤프,octal dump) 명령어는 입력(혹은 파일) 8진수나다른 진수로 변환해 줍니다od바이너리 데이타파일이나 /dev/urandom 같은 읽을 수 없는 시스템 디바이스 파일을 읽거나 처리하려고 할 때 필터로 쓸 수 있는 유용한 명령어입니다.

 

 

umask

주어진 콘테스트에서 새로 만들어진 파일과디렉토리 퍼미션에 적용 될 마스크를 지정해주는 지시자입니다.

 

새로운 디렉토리와 파일들이 쓰기 권한을가진 그룹이나 전체가 되는 것을 막기 위해 umask를 합리적인 표준 값인 002, 007, 020, 070, 022 등으로 설정합니다.

 

파일이라는 것은 원래 읽고 쓰는 것입니다. 일반적으로 실행을 하는 것은 드문 경우입니다. 따라서 값을 모두짝수로 지정하게 되는 것입니다.

 

파일의 기본적인 full 퍼미션은 666, 디렉토리는 777입니다.

이때umask가 지정 값에 따라서 퍼미션에 적용 될 값을 바꿔 줄 수 있습니다.

umask 022로 지정 되어 있을 경우

파일     : 666 - 022 = 644

디렉토리: 777 - 022 = 755

 

사용법

#umask [옵션] [마스크값]

 

현재umask 값 확인

#umask

umask 값을 심볼릭형태로 확인하려면

#umask -S

 

 

tee

컴파일을 하거나 또는 디버깅을 할 때, 터미널에 출력된 결과를화일로 저장하고 싶을 때 보통의 경우 "리다이렉션(재지향)" 기능을 이용하게 된다. 
예를 들자면 make install > install.log 정도가될 것이다. 
그런데 이렇게 되면 화일로만 저장이 되고, 화면으로는 출력내용이 전혀 보이지않게 된다. 
하지만 많은 경우 파일로 재지향 시킴과 동시에 화면출력 내용을 보고자 하는 경우가 있다. 

이럴때 tee 시스템명령을 이용하면 된다. 

make install | tee install.log 

이렇게 하면 install.log를 만듦과 동시에 화면 출력 역시 동일하게보여준다

 

 

tr

기능 : 문자열에서 특정 문자를 삭제하거나 변환한다.

 

사용법 : tr 옵션 문자열1 문자열2

 

옵션

-c : 문자열 1을 아스키값 001~337과 비교하여보수연산한다.

-d : 문자열1에서 지정한 문자를 지운 후 보여준다. 지운곳은 빈칸으로 남겨 둔다.

-s : 문자열2에서 반복되는 문자를 지운다.

-t : 문자열1을 문자열2의 길이로 자른다.

 

활용법

cat letter.txt

tr "a-z" "A-Z" < letter.txt

tr -d "0-9" < letter.txt

tr -s " " "\012" < letter.txt

 

 

file

file명령어는 지정된 파일의 종류 확인하는 명령어이다. TEXT파일인가? 또는 BINARY파일인가? 등을확인하는 명령어이다. file명령어는 /usr/share/magic의 내용을 참조하여 파일종류를 표시해준다. 이런 파일들 즉, magic파일을 "매직파일"이라고 부른다. 이 매직파일이 없으면 파일분류가 되지 않으며이런 매직파일에는 파일분류를 위한 정보들이 들어 있다.

 

사용형식

file [옵션] file

옵션

-s : special file

-i : 파일 정보를 mime 형태로 출력

 

사용 예

[root@host1root]# file chbad.sh 
chbad.sh: Bourne-Again shell script text executable

파일 chbad.sh Bourn Shell 스크립트파일로서 실행 가능한 상태의 파일임을 알 수 있다

[root@host1root]# file commmandlist.txt 
commmandlist.txt: ASCII text

commmandlist.txt파일은 텍스트로 된 파일로서 ASCII 문자들로 이루어진파일임을 알 수 있다.

 

[root@host1root]# file index.html
index.html: HTML document text

아래의 결과를 보면 index.html파일은 HTML문서포맷으로 되어 있는 것을 알 수 있다.

 

[root@host1root]# file report
report: directory

report는 일반 파일이 아닌 디렉토리 임을 알 수 있다.

 

# file -s/dev/sda1

/dev/sda1: Linuxrev 1.0 ext4 filesystem data (needs journal recovery) (extents) (large files)(huge files)

디스크 파일시스템 종류를 확인 할 수 있다.

 

 

set

# echo $SHELLOPTS

set 설정 명령어를 확인한다.

 

# set +o 명령어

설정을 무효화 시킨다.

 

-o noclobber(-C 옵션과 같음)

>와 같은 redirect 명령어로 파일을 덮어 씌우는 것을 방지한다.

 

-o vi

ksh을 사용하는 경우 이 명령어는 esc를 눌러서 k를 누른 후 이전 명령어들을 마치 vi의 명령 모드 처럼 사용할수 있어서 굉장히 편리하다

 

방향키 지원 및 TAB키자동완성의 기능을 가진 쉘은 본쉘이 아니라 베쉬(bash) 이며,
hp-ux, aix
에서 ksh를 많이 사용하고 익숙하다 보니 방향키 및 TAB키 자동완성이라는 좋은 bash 를 따로 설치해서 사용 안 하는편입니다. solaris bash 가 설치되지만 역시운영자에 따라 bash를 쓸 수도 ksh 를 쓸 수 있지만보편적으로 ksh 이 더 많이 사용 하는듯하며, 리눅스에서는 bash 가 기본 쉘이고 하다 보니 대부분 bash를 사용 하는 편입니다.

 

 

cut

기능

파일에서 원하는 필드를 뽑아내는 명령어. 필드는 구분자로 구분할 수 있다.

 

사용법

cut [옵션] 파일

 

옵션
-b :
바이트 단위로 나타낸다.
-c :
문자 단위로 나타낸다. 잘라낼 곳의 글자 위치를 지정한다. 콤마를 사용하거나 하이픈을

사용하여 범위를 정할 수도 있으며, 이런 표현들을 혼합하여 사용 할 수도 있다
-d :
기본 필드 구분자는 TAB이지만 이를 사용하지 않고 지정된 필드 구분자를 사용한다.
-f :
지정한 필드만을 보여준다.
-s :
필드 구분자에 포함되지 않는 라인은 보여주지 않는다.

 

예제

# uname -a

Linux fedora12.cemlin.co.kr 2.6.31.5-127.fc12.i686.PAE #1 SMP ~~~

# uname -a | cut -d ' ' -f 1,3

Linux 2.6.31.5-127.fc12.i686.PAE

-> OS커널 버전에서 공백문자로 1열과 3열만을 출력한다.

# cat /etc/mtab | cut -d ' ' -f 1,2

-> 마운트 된 파일 시스템 목록 얻기 

# cut -c 2-5 /etc/passwd  

-> /etc/passwd 파일의 2번째부터 5번째 문자만 출력한다

# cat /etc/passwd | cut -f 3 -d ":"     

-> /etc/passwd 파일의 3번째 필드를 출력한다. 구분자는 : 으로 한다 

 

col

기능

입력으로부터 줄 바꿈 문자(linefeed)를 바꾸는 필터

Col 필터는 "\n\r" 문자를 "\n" 문자로바꾸어 주는 필터이다. 또한 공백문자를 탭문자로 바꾸고, 백스페이스 문자를 없애는 기능을한다. 이 필터는 nroff(1)  tbl(1) 출력물의처리에 아주 유용하게 쓰인다. (이 두 풀그림에 의해서 만들어지는 대표적인 출력이 mancat 파일이다. , cat 파일을 단순 텍스트 파일로 바꾸는데 아주 유용하게 쓰인다.)

Col 필터는 표준 입력으로 받아서 표준출력으로 보낸다. (, 파일로 저장하려면, 파이프와 방향전환이 필요하다.)

 

HISTORY - col 명령은 Version 6 AT&T UNIX에서 처음 사용되었다.

 

사용법 

col [-bfx ] [-l num ]

 

옵션

-b

어떠한 백스페이스 문자도 출력하지 않는다. 이것은 팩스페이스 문자와 연결되는 마지막 문자만 출력한다.

-f

밑줄 속성을 가진 문자열을(Forwardhalf line feed) 변환하지 않는다. 일반적으로 밑줄 속성을 가진 문자열들은 다음줄에서밑줄(-)이 나타난다.(그런데, 실질적으로 colcrt(1) 필터를사용하지 않고는 제대로 이 기능이 나타나지 않더군요. - 옮긴이 말)

-h

여러 공백문자를 탭문자로 바꾼다.

-x

여러 공백문자들을 그대로 둔다.

-l num

메모리에 한번에 둘수 있는 최대 줄수를 num 줄로한다. 초기값은 128줄이다.

다음은 col 명령에서변환대상이 되는 각종 문자들이다:

 

 

setfacl, getfacl

특정 파일에 acl를설정한다. chmod는 소유자에게만 설정 할 수 있지만 setfacl은다른 유저가 특정 파일로 접근 할 수 있는 permission은 부여 한다.

 

Usage: setfacl[-bkndRLP] { -m|-M|-x|-X ... } file ...

주요옵션
-m : acl
설정. Modify의 약자로 권한을 지정하거나 수정 할 때 사용
-x : acl
삭제(권한 삭제)
-b :
모든 acl 삭제
--mask : mask
재설정
-R :
하위 디렉토리 및 파일 까지 포함하여 권한 변경

-d : 디렉토리는 자신의 디렉토리 내에서 생성되는 파일에 자동으로 적용되는acl

설정 예
[root@centos1 acl]# setfacl -m u:user1:rwx a.txt
[root@centos1 acl]# ls -l a.txt
-rw-rwxr--+ 1 root root 6  8
  5 08:50 a.txt

-> acl 설정이 된 경우 퍼미션 맨 끝에 '+' 문자가 보인다.
[root@centos1 acl]# getfacl a.txt  ->  acl
설정 확인을 할 수 있다.
# file: a.txt
# owner: root
# group: root
user::rw-
user:user1:rwx
group::r--
mask::rwx
other::r--

[root@centos1 acl]# setfacl -x u:user1 a.txt ; acl
설정 중user1 권한 삭제
[root@centos1 acl]# setfacl -b a.txt ;
모든 acl 설정삭제.

[root@centos1 acl]# setfacl -m u:user1:r-x,u:user2:rw a.txt
[root@centos1 acl]# ls -l a.txt
-rw-rwxr--+ 1 root root 6  8
  5 08:50 a.txt; 파일의 그룹권한이 바뀐다.
[root@centos1 acl]#

[root@centos1 acl]# getfacl a.txt
# file: a.txt
# owner: root
# group: root
user::rw-
user:user1:r-x
user:user2:rw-
group::r--
mask::rwx          ; mask
값은 파일그룹권한과 같다.
other::r--

[root@centos1 acl]#
[root@centos1 acl]# chmod 755 a.txt ; acl
설정이 된 파일의 퍼미션을 바꾸면...
[root@centos1 acl]# ls -l a.txt
-rwxr-xr-x+ 1 root root 6  8
  5 08:50 a.txt
[root@centos1 acl]# getfacl a.txt
# file: a.txt
# owner: root
# group: root
user::rwx
user:user1:r-x
user:user2:rw-                 #effective:r--    ; effective
권한이 실제권한이다.
group::r--                                            effective
권한은 설정권한과 umask 값의 교집합으로결정된다.
mask::r-x                 
other::r-x

[root@centos1 acl]# setfacl -b a.txt
[root@centos1 acl]# setfacl -m u:user1:rwx,g:staff:r-x,g:root:rwx,m:r-x a.txt
[root@centos1 acl]# getfacl a.txt
# file: a.txt
# owner: root
# group: root
user::rwx
user:user1:rwx                 #effective:r-x
group::r--
group:root:rwx                 #effective:r-x
group:staff:r-x
mask::r-x
other::r-x
[root@centos1 acl]#

[root@centos1 acl]# mkdir d1
[root@centos1 acl]# setfacl -m default:u:user1:rw-,g:staff:rwx d1 
default
옵션을 주면 d1 디렉토리내의 파일과 디렉토리는 acl권한이
자동으로 설정된다.
[root@centos1 acl]# getfacl d1
# file: d1
# owner: root
# group: root
user::rwx
group::r-x
group:staff:rwx
mask::rwx
other::r-x
default:user::rwx
default:user:user1:rw-
default:group::r-x
default:mask::rwx
default:other::r-x
[root@centos1 acl]#

[root@centos1 d1]# echo "hello" > a.txt
[root@centos1 d1]# ls -l
합계 8
-rw-rw-r--+ 1 root root 6  8
  5 09:15 a.txt
[root@centos1 d1]# getfacl a.txt
# file: a.txt
# owner: root
# group: root
user::rw-
user:user1:rw-
group::r-x                     #effective:r--
mask::rw-
other::r--

 

dd

dd 명령어는 파일을 변환 하거나 복사할 때 사용하는명령어 입니다.


명령어 위치 : /bin/dd
 

사용형식 : dd [옵션] ...
 

사용단위 : -c 캐릭터, 1byte

            -w 워드, 2bytes

            -k 킬로, 1024bytes

            -b 블록, 512bytes

 

1)dd명령어로 파일 복사하기

 

/mydir/test/a.txt 파일을 /home/b.txt 로 복사하려면 다음과 같이 하면 됩니다.

 

#dd if=/mydir/test/a.txt of=/home/b.txt

0+1 records in
0+1 records out

22 bytes (22 B) copied, 0.000385765 seconds, 57.0 kB/s

#ls -l /home/b.txt

-rw-r--r-- 1 root root 22  7 18 12:32 /home/b.txt

 

"if=" 에는 원본 파일의 위치지정

"of=" 에는 복사될 파일의위치를 지정

 

 

[출처] linux.sarang.net

dd : Window ghost처럼 리눅스 파티션 전체를 백업하고 복구하는 방법


리눅스가 설치된 파티션의 시작 실린더 번호와 끝 실린더 번호를
우선 기록해 둡니다.

fdisk -l /dev/hda > partition-info.txt
하시면 될듯..

넉넉한 backup 공간을 확보한 다음 dd 명령을사용하면 됩니다.

# dd if=/dev/hda2 of=/backup/linux.image

partition-info.txt
파일과 linux.image 파일을 잘 보관하시면 되겠습니다.

원위치 시킬때는 거꾸로 써주면 됩니다.

# dd if=/backup/linux.image of=/dev/hda2

물론 파티션 정보가 원래의 것과 똑같아야 됩니다.partition-info.txt 파일
을 참고하여 fdisk를 이용해서 똑같이 만들어주면 됩니다.

dd
명령어는 잘못사용하면 시스템을 날려먹기 쉽습니다. 조심하는게
제일입니다.

 

[출처] http://blog.naver.com/koleekr7?Redirect=Log&logNo=100092813697

기능 : 부트 플로피나 스왑파일을 만드는 특수한복사를 위한 명령어이다.

 

사용법 : dd 옵션

 

of=file : 표준출력대신 지정한 파일에 작성한다.

if=file : 표준입력대신 지정한 파일에서 불러들인다.

ibs=size 지정한 사이즈만큼 읽는다.

obs=size 지정한 사이즈만큼 쓴다.

bs=size 지정한 사이즈만큼 읽고 쓴다.

count=n 입력블록의 ibs크기만큼 복사한다.

conv=ascii:EBCDIC->ASCII로 변환

conv=ebcdic ->ASCII->EBCDIC로 변환

conv=ibm : ASCII코드호환을 EBCDIC코드로 변환

conv=swab: \입력되는 두 바이트의 순서를 바꾼다. 입력파일에서 짝이 맞지않는 하나의 비트가 남으면 , 마지막 바이트는 단순히 복사된다.

 

활용

dd if=kernel-imageof=/dev/fd0 bs=1440 -> 커널이미지(부팅디스크) fd0디스크에 1.4mb 사이즈로 복사함

 

 

expand

탭 문자를 공백이나빈 칸으로 변환하는 명령
이 명령은 표준출력에 결과를 쓰면서, 지정된 파일명이나,표준입력을처리한다. 모든 탭문자는 공백문자로 변환된다.  


사용방법
expand [-tabstop][-tab1,tab2,...]
파일명


unexpand

expand와는 반대로 빈칸을탭으로 변환하는 명령

 

 

dig

dig(domain information groper)dns 정보 출력.

 

설치 여부 확인

# rpm -qa | grep bind-utils

 

사용법

dig [옵션] 도메인

 

 

nslookup

Nslookup is a program to query Internet domain name servers.

 

사용법

nslookup [옵션] 도메인

 

 

seq

print a sequence of numbers

 

사용법

seq [OPTION] LAST

seq [OPTION] FIRST LAST

seq [OPTION] FIRST INCREMENT LAST

 

 

usermod

usermod 명령어는 생성한 계정 사용자 설정을 변경하는 명령어 입니다

 

사용법

usermod [options] userID

 

옵션

-c : comment 사용자의설명을 변경한다.

-d : homedirectory사용자 홈 디렉토리 위치를 지정한다.

-e : date 사용자의사용기간을 제한한다. (YYYY_MM_DD)

-f : 남은 날수 임시사용자의 사용 제한

-l : 사용자 ID : 사용자의 ID를 변경한다.

-p : 패스워드 : 사용자의 패스워드를 지정한다.

-s : shell : 사용자의쉘을 지정한다.

-L : 사용자의 패스워드를막아놓아 접근을 막는다.

-U : 사용자의 접근을막은 패스워드를 풀어준다.

-a : -G 옵션과함께 그룹에 추가할 때(Add the user to the supplementary group(s). Use only with the -G option)

- g : 그룹 변경

-G : 새로운 그룹에 추가

 

사용예

# usermod -a -G 그룹ID 사용자ID    - 사용자ID를 그룹ID으로 추가  


그룹 확인

#groups {username}     - 사용자가 어떤 그룹에 속해 있는지 확인


그룹 추가

# groupadd -g 10 group1    - GID 10인 group1 라는 그룹 생성


그룹에 user 등록/해제

# usermod -g group1 user   - group1 그룹에 user 라는 멤버 등록. 기존 그룹에서 해제 됨

# usermod -G group1,group2 user    - 그룹 group1, group2 에 동시 등록. 그룹과 그룹은 공백없이 콤마로만 구분한다.

# usermod -G group1 user   - 그룹 재지정 (group2 에서 해제 됨)

# id user 로 확인

shell 변경

usermod -s /bin/bash user

 

 

chage

change userpassword expiry information

 

사용법

chage [options][LOGIN]

 

옵션

-l : 계정의 설정 정보 보기 
-d : 1970.1.1
이후 or YYYY-MM-DD 포맷의 마지막 패스워드 변경 날자 
-m :
패스워드 변경 가능한 최소날짜, 0으로 설정되면 언제라도 변경할 수 있다. 
-M :
패스워드만기, 패스워드의 최대 유효일수 
-I :
패스워드가 만료된 이후, 계정이 lock되기 전까지의 날자를 설정 
-E :
계정만기, 1970.1.1이후 or YYYY-MM-DD 포맷의 계정을 사용할 수 없게 되는 날짜. 
-W :
만료 몇일전에 경고메시지를 출력할 것인가를 설정.

 

사용예

# chage -M 30 -I 10 -W 3 test 
test
계정의 패스워드 만기일은 30일이후가 되고, 3일전에 경고 메시지가 출력되며 만기 10일이후, lock이 된다. 

# chage -E 2005-04-10 test 
test
계정은 2005-04-10에 계정이만기되어 사용할 수 없게 된다

 

 

sysctl

sysctl 명령어는 커널 runtime 시에 커널의 파라미터를 변경할 때 사용
시스템의 /proc/sys 디렉토리밑에 있는 커널 매개변수를 제어

사용

sysctl [option] 파일명 or 파일명=


옵션

-a : 현재 커널 매개변수와값을 보여줌
-p : sysctl
환경변수파일 (default : /etc/sysctl.conf)의설정 상태 표시
-n :
특정키에 대한 값을 보여줌
-w variable=value :
변수에 값을 설정
-A :
테이블형태로 설정가능한 파라미터를 보여줌


예문
현재 커널의 매개변수값을 출력

sysctl -a


수정 후에 sysctl -p를 실행하면 변경 내용을 commit 한다.

이렇게 하면 재부팅 된 이후에도 변경 된 값을 유지한다.

# vi /etc/sysctl.conf

# sysctl -p

 

 

gpg

NAME

       gpg - OpenPGP encryption and signingtool

 

SYNOPSIS

       gpg [--homedir dir] [--options file][options] command [args]

 

DESCRIPTION

       gpg is  the  OpenPGP part of the GNU Privacy Guard (GnuPG). It is a tool to

       provide digital encryption and signingservices using the OpenPGP standard. gpg

       features complete key management and all bellsand whistles

       you can expect from a decent OpenPGPimplementation.

       This is the standalone version ofgpg. 

       Fordesktop use you should consider using gpg2.

 

# gpg -c test01

gpg: directory `/root/.gnupg' created

gpg: new configuration file `/root/.gnupg/gpg.conf' created

gpg: WARNING: options in `/root/.gnupg/gpg.conf' are not yet activeduring this run

gpg: keyring `/root/.gnupg/pubring.gpg' created

Enter passphrase:

Repeat passphrase:

 

# ls

test01   test01.gpg

# gpg test01.gpg

gpg: keyring `/root/.gnupg/secring.gpg' created

gpg: CAST5 encrypted data

Enter passphrase:

 

 

unset

bash built-in 명령어

unset [-fv] [이름 ...]

각각의  이름 에 대하여, 해당하는 변수를 제거하거나, -f 옵션의 경우 함수를 제거한다.

 

 

write      

다른 사용자에게 메시지를 보낸다.

 

SYNOPSIS

       write user [ttyname]

 

DESCRIPTION

Write 명령은 행 단위로 다른 사용자와 의사소통을 할 수 있게 한다.

write 명령을 사용하면, 상대방의화면에는 다음과 같은 메세지가 나타난다.

Message from yourname@yourhoston yourtty at hh:mm ...

 

상대방이 어느 위치에 있건 간에 이 메시지는 나타난다상대방도 이 소식에 대한 답을 하기 위해서는 똑같이 write 명령을 사용하면 된다.

 

write 명령을 끝내려면, 파일끝 문자(eof), 중지 문자를 입력한다. 이러면, 상대방 화면에는 EOF 글자가나타나고, 더 이상의 메시지 입력은 되지 않는다.

 

  메시지  수신을  거부 하려면, mesg(1) 명령을사용한다예를 들어,  nroff(1) pr(1)명령들도, 자동 수신 거부 기능을 제공하고 있다하지만,슈퍼 유저의 메시지는 거부할 수 없다.

 

 

basename

화일명으로부터디렉토리와 suffix 를 제거한다

# basename ./aaa

aaa

# basename /etc/passwd

passwd

 

 

logger

Logger makes entries in the system log. It provides a shell commandinterface to the syslog(3) system log module.

따라서 syslog 데몬이 정상 동작하는지 확인 할 수 있다.

사용 예

# logger log test

# tail /var/log/messages

...

May 10 19:08:36 fedora14 root: log test

 

 

groups

사용자가 속한 그룹을출력한다.

# groups root

 

 

pidof

실행 중인 프로세스의 PID를 찾는다.

 

사용예

# pidof process

 

 

run-parts

대상 디렉토리에 들어 있는 모든 스크립트를 파일명 아스키 순서대로 차례로 실행시켜 줍니다.

crond 데몬이 /etc/cron.* 디렉토리에들어 있는 스크립트를 실행 시키기 위해 run-parts 를 실행시킵니다.

# run-parts

01 * * * * rootrun-parts /etc/cron.hourly

02 4 * * * rootrun-parts /etc/cron.daily

22 4 * * 0 rootrun-parts /etc/cron.weekly

42 4 1 * * rootrun-parts /etc/cron.monthly

 

 

lsof(list open files)

lsof lists on itsstandard output file information about files opened by processes

 

 

unzip

test 디렉토리에 foo.zip 파일 풀기

# unzip foo.zip -d test



useradd

# useradd username 
기본 값으로 그룹생성, 홈 디렉토리 생성, shell 지정

옵션

-c : 설명 입력, finger 로 확인하면 보여주는간단한 사용자 설명

-d : 홈 디렉토리 지정

-e : 계정 만료일 지정

-f : 계정 유효일 지정

-g : 로그인 그룹 지정

-G : 그룹명 추가 등록

-m : 홈 디렉토리 자동 생성

-M : 홈 디렉토리 자동 생성 금지

-p : 패스워드 지정

-s : shell지정

-u : uid 지정 


기본 설정

# useradd -d /home/user -s /bin/bash user


/bin/false vs /sbin/nologin

/bin/false 

allows a login, but no shell, no ssh tunnels and no home directory.

-> /bin/false 는 로긴을 허용하지만 쉘과 ssh 터널 그리고 홈디렉토리를 제공하지 않는다. 주로 메일만 사용 가능한 계정을 만들 때 쓴다.

eg, # useradd -M -s /bin/false User_id (-M home directory를 만들지 않는다.)
 

/sbin/nologin 

disallows logins completely and returns a polite account unavailable message.

-> /sbin/nologin 은 완전히 로그인을 허용하지 않고 계정을 이용할 수 없다는 정책적 메시지만을 답한다. 주로 데몬 계정의 쉘로서 많이 쓴다.

/dev/null

오류메시지 없이 로그인을 거부



userdel

userdel 계정 : 계정만 지워지고 홈디렉토리, 메일계정은 그대로 남는다
userdel -r 계정 : 계정뿐만 아니라 홈디렉토리와 메일계정 까지 지운다.
userdel -rf 계정 : 홈디렉토리 뿐만 아니라 ID계정의 모든 파일을 완전히 지운다.  

# userdel test
# ll /home/test
# ll /var/spool/mail/test

userdel만 실행했을경우, 홈디렉토리의 내용 및, 메일계정은 그대로 있는채로 계정만 삭제된다. 직접 홈디렉토리의 내용 및 메일계정을 직접 삭제해주어야 한다. 따라서 -r 옵션을 주었을경우엔 홈디렉토리의 내용 및 메일의 계정이  동시에 삭제가 된다.


locate
find files by name


버전 확인

# cat /etc/*-release 



alternatives
alternatives - maintain symbolic links determining default commands


패스워드 설정 및 변경

# passwd

root 계정에서 다른 계정의 패스워드 설정 

# passwd 계정



nohup

nohup is a POSIX command to ignore the HUP (hangup) signal. The HUP signal is, by convention, the way a terminal warns dependent processes of logout.

Output that would normally go to the terminal goes to a file called nohup.out if it has not already been redirected.


The first of the commands below starts the program abcd in the background in such a way that the subsequent logout does not stop it.

$ nohup abcd &
$ exit

한줄에서 여러 명령어 실행(; vs && vs &)

; - 이전 명령어의 실패여부와 상관없이 다음 명령어가 실행됨

$ echo 1; echo 2

&& - 이전 명령어가 성공해야 다음 명령어가 실행가능

& - 이전 명령어를 백그라운드로 실행하고 다음 명령어를 실행








'System > Linux' 카테고리의 다른 글

SELinux  (0) 2012.03.09
Live CD  (0) 2012.03.07
linux - LVM(Linux Volume Manager) 예제  (0) 2011.11.02
A typical north/southbridge layout  (0) 2011.11.02
일반 유저의 .rhosts 파일 생성 금지법  (0) 2011.11.01
Posted by linuxism
,