캠핑과 개발


/etc/ssh/sshd_config

#vi /etc/ssh/sshd_config

PermitRootLogin yes
Subsystem       sftp    /usr/lib/misc/sftp-server

# /etc/init.d/sshd restart

'개발 > Linux' 카테고리의 다른 글

ssh 접속 설정.  (0) 2011.11.29
linux 방화벽 열기  (0) 2011.11.29
linux 명령어 - nohup  (0) 2011.07.21
Linux IP 변경  (0) 2011.07.21
linux 명령어 - chmod  (0) 2011.07.21

리눅스를 사용하다 보면 shell 이나 프로그램들을 데몬처럼 계속 올려서 사용할 경우가 있다 
기본적으로 명령어 뒤에 & 를 붙혀 실행하면 백그라운드 프로세스로 실행되지만
ssh 접속을 끝거나 터미널을 종료하면 실행이 종료된다.
(bash 에 터미널이 끊겨도 종료안되게 하는 옵션도 있다고 함 shopt | grep huponexit로 확인가능 off 명 옵션이 적용안된거임)

그래서 nohup을 사용하면 shell이나 실행 파일을 데몬처럼 계속 실행하게 할수 있음


[사용법]
$ nohup run.sh &
(shell 파일 또는 실행 파일의 퍼미션이 755이어야 함)

$ ps -ef | grep [실행파일명]  으로 프로세스 확인가능
프로세스를 죽이려면 ps로 pid를 알고 
$ kill -9 [pid]  로 죽이면 됨

기본적으로 nohup을 실행하면 nohup.out의 로그파일이 남게 됨
이 파일명은 변경하여 사용가능

nohup /usr/local/java/bin/java -jar XDreamyi3shop.jar &

nohup -> 터미널에서 로그아웃을 해도 실행시킨 프로그램은 종료되지 않고 계속 돈다.
& -> 백그라운드 실행.. ps -aux를 치면.. 프로그램이 돌고 있음을 알 수 있다.


[출처] http://www.wakgu.com/category/2?page=4




'개발 > Linux' 카테고리의 다른 글

linux 방화벽 열기  (0) 2011.11.29
sftp root 계정 접속 설정  (0) 2011.07.27
Linux IP 변경  (0) 2011.07.21
linux 명령어 - chmod  (0) 2011.07.21
[명령어] service 방화벽 상태 및 설정  (0) 2011.05.25

Linux IP 변경

개발/Linux2011. 7. 21. 13:44
vi /etc/sysconfig/network-scripts 
ifcfg-eth0 선택 
IPADDR=xxx.xxx.xxx.xxx 부분 변경저장 
service network restart

'개발 > Linux' 카테고리의 다른 글

sftp root 계정 접속 설정  (0) 2011.07.27
linux 명령어 - nohup  (0) 2011.07.21
linux 명령어 - chmod  (0) 2011.07.21
[명령어] service 방화벽 상태 및 설정  (0) 2011.05.25
[명령어] history 이전에 실행된 명령어 출력  (0) 2011.05.25

chmod 751 폴더

앞에 7은 소유자권한부분
중간 자리의 5는 그룹소속자권한
마지막 자리의 1은 일반다른사용자권한 부분


* 표시되는 퍼미션
0   ---   아무런 권한이 없음
1   --x   실행(eXecution)권한만 있음
2   -w-  쓰기(Write) 권한만 있음
3   -wx  쓰기와 실행의 권한만 있음
4   r--    읽기(read)권한만 있음
5   r-x    읽기와 실행권한만 있음
6   rw-   읽기와 쓰기 권한만 있음
7   rwx   읽기, 쓰기, 실행 권한이 있음

숫자로 하지 않고..
문자열로 권한을 줄 수 있다.

u : 소유자(user)를 의미함
g : 그룹(group)를 의미함
o : 다른사용자(other)를 의미함
a : 모두(all)를 의미함 (Default)

예 : chomd o+rw a_file  <-- 이건은 다른 사용자에게 읽기와 쓰기의 권한을 준것임.
여기서 + 의 기호의 의미는 권한을 부여한다는 의미이며..
- 의 의미는 권한을 제거한다는 의미가 된다.

ex) chomd a+r testfile  <-- testfile 파일의 권한을 모든 사용자가 읽기를 가능하겠다는 의미.
ex) chomd a+rx testfile  <-- testfile 파일의 권한을 모든 사용자가 읽기와 실행이 가능하겠다는 의미.



//----------------------------------

전체 설정을 변경한다면..

옵션으로 -R 이나 --recursive

chmod -R g+rw 폴더

//----------------------------------

[출처] http://www.wakgu.com/198?category=0

'개발 > Linux' 카테고리의 다른 글

linux 명령어 - nohup  (0) 2011.07.21
Linux IP 변경  (0) 2011.07.21
[명령어] service 방화벽 상태 및 설정  (0) 2011.05.25
[명령어] history 이전에 실행된 명령어 출력  (0) 2011.05.25
linux 명령어 - ln 심볼릭 링크  (0) 2011.05.25


# 방화벽 상태 알아보기
   service iptables status

# 방화벽 올리고 내리기
   service iptables stop
   service iptables start

# 방화벽 설정 수정하기
   vi /etc/sysconfig/iptables

# 방화벽 해제
   iptable -F 혹은
   ipchains -F

lokkit -q --disabled 라고 하면 방화벽이 해제됩니다.
iptables -F라고 직접 명령을 주어도 됩니다 F는 Flush 를 뜻합니다.
Kernel 2.2대의 linux 배포판이라면 ipchains -F 하면 됩니다.

'개발 > Linux' 카테고리의 다른 글

Linux IP 변경  (0) 2011.07.21
linux 명령어 - chmod  (0) 2011.07.21
[명령어] history 이전에 실행된 명령어 출력  (0) 2011.05.25
linux 명령어 - ln 심볼릭 링크  (0) 2011.05.25
linux - netstat  (0) 2011.02.14


이전에 실행된 명령어를 보여줍니다. 이런 명령어들을 이용하여 간단하기 이전 명령을 재 실행할 수 있습니다.

[사용법] history

[출력 예] 
  120  mv apache-tomcat-5.5.33.tar.gz /usr/local
  121  cd /usr/local
  122  ls
  123  cd ls
  124  ls
  125  cd ..
  126  ls
  127  cd local
  128  ls
  129  ls
  130  chmod 755 apache-tomcat-5.5.33.tar.gz
  131  ls
  132  la
  133  ls
  134  ll
  135  tar -xvzf apache-tomcat-5.5.33.tar.gz

다음과 같은 리스트 목록이 나오면 해당 명령어 앞에 나오는 숫자를 이용해 간단하게 해당 명령어를 재 실행 할 수 있습니다.

[사용법]
하나 사용시 : ![숫자]
여러개 사용시 : ![숫자];!숫자;![숫자]


'개발 > Linux' 카테고리의 다른 글

linux 명령어 - chmod  (0) 2011.07.21
[명령어] service 방화벽 상태 및 설정  (0) 2011.05.25
linux 명령어 - ln 심볼릭 링크  (0) 2011.05.25
linux - netstat  (0) 2011.02.14
linux에 mysql 설치하기  (0) 2010.01.05




리눅스의 바로가기로 심볼릭 링크와 하드링크가 있습니다.

하드링크
하드링크는 파일을 직접 가르키는 것입니다. 이 링크를 삭제하면 해당 파일도 삭제가 됩니다.

[사용법] ln [타켓] [링크될 이름]



심볼릭링크
하드링크와 반대로 링크가 삭제되어도 파일은 그대로 있습니다. 단순 바로가기입니다.

[사용법] ln  -s  [타겟]  [링크될 이름]


예제 : 

ln -s /webroot/home/httpd/test.com/index.php /home/vivek/index.php



'개발 > Linux' 카테고리의 다른 글

[명령어] service 방화벽 상태 및 설정  (0) 2011.05.25
[명령어] history 이전에 실행된 명령어 출력  (0) 2011.05.25
linux - netstat  (0) 2011.02.14
linux에 mysql 설치하기  (0) 2010.01.05
vi 사용하기  (0) 2009.09.10

linux - netstat

개발/Linux2011. 2. 14. 17:46

netstat는 시스템의 네트워크 연결 상태(tcp, udp, 소켓연결)을 보여주는 유틸리티입니다.

사용 방법은 netstat [options] 으로 사용하면 됩니다. 

 

* 옵션

 옵션

설명 

 -a

 모든 소켓을 보기. 이 옵션을 안 넣으면 상태가 Established 상태인 것만 나온다. 동일 옵션은 --all

 -c

 현재 실행 명령을 매 초마다 실행. 동일 옵션은 --continuous

    => netstat -anc (해당 명령을 매 초마다 실행.)

    => netstat 10 (-c 옵션이 안 들어가도 해당 숫자만큼 시간이 지난후에 명령어 실행.)

 -e

 확장 정보 추가. User 부분과 Inode 열이 추가된다. 동일 옵션은 --extend

 -g

  멀티캐스트에 대한 그룹별 정보를 보여줌 (IPv4/IPv6). 동일 옵션은 --groups

 -i

 인터페이스별 통계값. -I=(인터페이스명) / --interface=(인터페이스명) 을 하면 해당 인터페이스값만 보기도 가능.

 -l

 대기중인 소켓 리스트만 보여준다. 동일 옵션은 --listening

 -n

 도메인 주소를 읽어들이지 않고 숫자로 출력한다. --numeric-hosts --numeric-ports --numeric-users 명령어가 합쳐진 옵션. 동일 옵션은 --numeric

 --numeric-hosts : 호스트 부분을 IP로 출력.

 --numeric-ports : 포트 부분을 숫자로 출력.

 --numeric-users : 유저 부분을 숫자로 출력(UID).

 -o

연결 대기 시간 표기. 동일 옵션은 --timers

 -p

 PID(프로세서 ID) 와 사용중인 프로그램명이 표시된다. 동일 옵션은 --program

 -r

 라우팅 테이블 보기. 'route' 명령어와 동일. 동일 옵션은 --route

 -s

 프로토콜 요약 정보. 동일 옵션은 --statistics

 -t

 TCP 프로토콜 보기. 연결된 것만 나옴. 동일 옵션은 --tcp

 -u

 UDP 프로토콜 보기. 동일 옵션은 --udp

 -v

 버전 보기.

 -w

 RAW 프로토콜 보기. 동일 옵션은 --raw

 -A

 프로토콜별로 보기. 종류는 inet, unix, ipx, ax25, netrom, ddp 가 있음. 동일 옵션은 --protocol

    => netstat -A inet (TCP 프로토콜 연결 상태만 보기)

    => netstat --protocol=inet (위의 명령어와 동일)

 -M

 마스커레이딩 정보 표시. 동일 옵션은 --masquerade


 

* netstat 상태값

 정보

 설명

 Proto

 프로토콜 종류. TCP / UDP / RAW 가 있음.

 Recv-Q

 해당 프로그램이 현재 받는 바이트 표기.

 Send-Q

 해당 프로그램이 현재 보내는 바이트 표기.

 Local Address

 출발지 주소 및 포트. 자신의 주소 및 포트.

 Foreign Address

 목적지 주소 및 포트.

 State

 포트의 상태

    => CLOSED : 연결이 완전히 종료된 상태

    => CLOSED_WAIT : TCP 연결이 상위 응용프로그램 레벨로부터 연결 종료를 기다리는 상태

    => CLOSING : 흔하지 않으나 주로 확인 메세지가 전송 도중 유실된 상태

    => ESTABLISHED : 연결이 완료된 상태.

    => FIN_WAIT1 : 클라이언트가 서버에게 연결을 끊고자 요청하는 상태(FIN을 보낸 상태)

    => FIN_WAIT2 : 서버가 클라이언트로부터 연결 종료 응답을 기다리는 상태(서버가 클라이언트로 부터 최초로 FIN을 받은 후, 클라이언트에게 ACK을 주었을때)

    => LAST_ACK : 호스트가 원격지 호스트의 연결 종료 요구 승인을 기다리는 상태

    => LISTEN :  대기중인 포트. 포트가 열려 있고 클리이언트의 요청을 기다리는 상태.(대기중 상태)

    => SYN_RECV : 연결 요청을 받은 후에 확인 값을 기다리는 상태.

    => SYN_SENT : 클라이언트가 서버에게 연결을 요청한 상태

    => SYN_RECEIVED :  서버가 클라이언트로부터 접속 요구를 받아 클라이언트에게 응담을 하였지만, 아직 클라이언트에게 확인 메세지를 받지 못한 상태

    => TIME_WAIT : 연결은 종료되었지만 종료된 후 기다리는 상태. 약 1분 정도이며 -o 옵션으로 확인 가능. 시간이 다 지나면 사라짐.

    => UNKNOWN : 소켓의 상태를 알 수 없음.



TCP 플래그

 플래그

설명 

 SYN

Synchronization. 

세션을 설정하는 데 사용되며 초기에 시퀀스 번호를 임의로 생성하여 보냄. 100%는 아니지만 대부분 클라이언트측에서 보내는 플래그 

 ACK

Acknowledgement. 

받는 사람이 보낸 사람 시퀀스 번호에 TCP 계층에서 길이 또는 데이터 양을 더한 것과 같은 ACK를 보냄.

ACK의 번호와 응답을 통해 보낸 패켓에 대한 손실을 판단하여 재전송 하거나 다음 패킷을 전송

 FIN

Finish.

세션을 종료시키는데 사용되며, 보낸 사림이 더 이상 보낼 데이터가 없음을 보여줌.

 RST

Reset.

재설정을 하는 과정이며, 양방향에서 동시에 일어나는 중단 작업.

비정상적인 세션 연결 끊기에 해당

 PSH

 Push.

대화형 트래픽에 사용되며, 버퍼가 채워지기를 기다리지 않고 데이터를 전달. 데이터는 버퍼링 없이 바로 위 Layer가 아닌 7 Layer의 응용프로그램으로 바로 전달

 URG

Urgent.

Urgent point가 유효한 것인지를 나타냄. Urgent point란 전송하는 데이터 중에서 긴급히 전달해야 하는 내용이 있을 경우 사용 



기본 사용법

netstat -t 현재 접속중의 포트들의 상태 내용 확인

netstat -nap (열려 있는 모든 포트)

netstat -l 또는 netstat -nap | grep LISTEN (LISTEN 되는 모든 포트)

netstat -nap | grep ESTABLISHED | wc -l ( 모든 서비스 동시 접속자 수)

netstat -nap | grep :80 | grep ESTABLISHED | wc -l ( 웹 동시 접속자 수)

netstat -natc (열려있는 모든 TCP 포트를 일정시간마다 반복 출력한다) 


 

* 예제.

1. 인터넷 연결 상태 보기.


[root@navi-linux ~]# netstat -A inet

Active Internet connections (w/o servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State

tcp        0      0 navi-linux:35212            123.123.123.123:http           ESTABLISHED

tcp        0      0 navi-linux:56976            61-111-58-50.kidc.net:http  ESTABLISHED

tcp        0    314 navi-linux:telnet           231.231.231.231:netcheque     ESTABLISHED

 


2. 통계값 보기 (프로토콜별).


[root@navi-linux ~]# netstat -s

Ip:

    1141245 total packets received

    355 with invalid addresses

    0 forwarded

    0 incoming packets discarded

    1007688 incoming packets delivered

    1050768 requests sent out

    24 dropped because of missing route

Icmp:

    24 ICMP messages received

    0 input ICMP message failed.

    ICMP input histogram:

        destination unreachable: 22

        echo requests: 1

        echo replies: 1

    141 ICMP messages sent

    0 ICMP messages failed

    ICMP output histogram:

        destination unreachable: 135

        echo request: 5

        echo replies: 1

IcmpMsg:

        InType0: 1

        InType3: 22

        InType8: 1

        OutType0: 1

        OutType3: 135

        OutType8: 5

Tcp:

    64013 active connections openings

    16 passive connection openings

    10 failed connection attempts

    12 connection resets received

    6 connections established

    901778 segments received

    941524 segments send out

    2915 segments retransmited

    0 bad segments received.

    163 resets sent

Udp:

    105794 packets received

    4 packets to unknown port received.

    0 packet receive errors

    106216 packets sent

UdpLite:

TcpExt:

    1 ICMP packets dropped because socket was locked

    4112 TCP sockets finished time wait in fast timer

    2 packets rejects in established connections because of timestamp

    111607 delayed acks sent

    12 delayed acks further delayed because of locked socket

    Quick ack mode was activated 901 times

    112 packets directly queued to recvmsg prequeue.

    832 packets directly received from prequeue

    464924 packets header predicted

    48 packets header predicted and directly queued to user

    125499 acknowledgments not containing data received

    1063 predicted acknowledgments

    6 congestion windows recovered after partial ack

    0 TCP data loss events

    2 timeouts after SACK recovery

    393 other TCP timeouts

    901 DSACKs sent for old packets

    78 DSACKs received

    6 connections reset due to unexpected data

    10 connections reset due to early user close

    356 connections aborted due to timeout

    TCPDSACKIgnoredOld: 4

    TCPDSACKIgnoredNoUndo: 6

    TCPSackShiftFallback: 2

IpExt:

    InMcastPkts: 7643

    OutMcastPkts: 42

    InBcastPkts: 124586

    InOctets: 752411380

    OutOctets: 172659736

    InMcastOctets: 2477680

    OutMcastOctets: 11674

    InBcastOctets: 13876218

 

3. 통계값 보기 (인터페이스별).


[root@navi-linux ~]# netstat -i

Kernel Interface table

Iface       MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR

Flg

eth0       1500   0  2168579      0      0      0  1053363      0      0      0

BMRU

eth1       1500   0        0      0      0      0        0      0      0      0

BMU

eth2       1500   0        0      0      0      0        0      0      0      0

BMU

lo        16436   0       20      0      0      0       20      0      0      0

LRU

 

4. 열려 있는 TCP 포트 보기.


[root@navi-linux ~]# netstat -lnt -A inet

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State

tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN

tcp        0      0 0.0.0.0:34580               0.0.0.0:*                   LISTEN

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN

 

5. 연결된 TCP 포트 보기.


[root@navi-linux ~]# netstat -nt -A inet

Active Internet connections (w/o servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State

tcp        0      0 111.111.111.111:33659         123.123.123.123:80             ESTABLISHED

tcp        0      0 111.111.111.111:56976         61.111.58.50:80             ESTABLISHED

tcp        0    134 112.112.112.112:23            121.121.121.121:4008          ESTABLISHED

 

6. 모든 열려있는 포트 보기.

[root@navi-linux ~]# netstat -ant -A inet


Active Internet connections (w/o servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State


tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN

tcp        0      0 0.0.0.0:34580               0.0.0.0:*                   LISTEN

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN


tcp        0      0 111.111.111.111:33659         123.123.123.123:80             ESTABLISHED

tcp        0      0 111.111.111.111:56976         61.111.58.50:80             ESTABLISHED

tcp        0    134 112.112.112.112:23            121.121.121.121:4008          ESTABLISHED

 

7. 특정 포트나 호스트 모니터링 하기. (1초마다 80포트(인터넷)를 보기. ':80' 라는 텍스트가 들어간 라인을 보여준다. netstat -A inet -n | grep :80 을 1초마다 실행하는 결과이다.)

[root@navi-linux ~]# netstat -A inet -n -c | grep :80

 

tcp        0      0 111.111.111.111:56214         123.123.123.123:80             ESTABLISHED

tcp        0      0 111.111.111.111:56976         61.111.58.50:80             ESTABLISHED

 

8. 네트워크 자원을 사용중인 프로그램 종료 하기.


[root@navi-linux ~]# netstat -A inet -atp

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address               Foreign Address             Stat

e       PID/Program name

tcp        0      0 *:sunrpc                    *:*                         LIST

EN      856/rpcbind

tcp        0      0 *:34580                     *:*                         LIST

EN      935/rpc.statd

tcp        0      0 *:ssh                       *:*                         LIST

EN      3681/sshd

tcp        0      0 navi-linux:47270            111.111.111.111:http           ESTA

BLISHED 2263/firefox

tcp        0      0 navi-linux:41638            111.111.111.111:http           ESTA

BLISHED 2263/firefox

tcp        0      0 navi-linux:telnet           222.222.222.222:netplan       ESTA

BLISHED 943/in.telnetd: 172

tcp        0      0 navi-linux:46763            111.111.111.111:http           ESTA

BLISHED 2263/firefox

tcp        0      0 navi-linux:47264            111.111.111.111:http           TIME

_WAIT   -

tcp        0      0 navi-linux:52984            123.123.123.123:ftp          ESTA

BLISHED 886/filezilla

tcp        0      0 navi-linux:56581            61-111-58-50.kidc.net:http  ESTA

BLISHED 1857/clock-applet

tcp        0      0 navi-linux:47273            111.111.111.111:http           ESTA

BLISHED 2263/firefox

 

파일질라가 네트워크를 이용중이다. 프로그램을 종료시키자. -p 옵션이 들어가 있어야 한다. 맨 우측 886/filezilla 가 보인다. 왼쪽이 프로세서 ID(PID)이고 오른쪽이 실행이름이다.

 

[root@navi-linux ~]# kill 886

 

kill 명령어로 파일질라의 PID를 입력하여 프로그램을 종료시킨다.

 

[root@navi-linux ~]# netstat -A inet -atp

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address               Foreign Address             Stat

e       PID/Program name

tcp        0      0 *:sunrpc                    *:*                         LIST

EN      856/rpcbind

tcp        0      0 *:34580                     *:*                         LIST

EN      935/rpc.statd

tcp        0      0 *:ssh                       *:*                         LIST

EN      3681/sshd

tcp        0      0 navi-linux:57621            111.111.111.111:http           ESTA

BLISHED 2263/firefox

tcp        0      2 navi-linux:telnet           222.222.222.222:netplan       ESTA

BLISHED 943/in.telnetd: 172

tcp        0      0 navi-linux:42278            111.111.111.111:http           ESTA

BLISHED 2263/firefox

tcp        0      0 navi-linux:52984            123.123.123.123:ftp          TIME

_WAIT   -

tcp        0      0 navi-linux:56581            61-111-58-50.kidc.net:http  ESTA

BLISHED 1857/clock-applet

 

재확인결과 없어져있다. TIME_WAIT 은 연결 종료 후 1분간 보인다.

 

현재 얼마나 많은 네트워크 접속이 있는지 확인하기

while [ true ]

do

net_status=`netstat -t | wc -l`

dt=`date "%Y-%m-%d %H:%M:%S"


echo "${dt} : ${net_status}"

done

결과

2012-02-06 12:03:32 : 5402

2012-02-06 12:03:35 : 5412




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

윈도우용 netstat

시작 - 실행 - cmd 에서 커맨드 입력 상태로 먼저 들어간다.

Netstat활성 TCP 연결, 컴퓨터 수신 포트, 이더넷 통계, IP 라우팅 테이블, IPv4 통계(IP, ICMP, TCP, UDP 프로토콜에 대한 통계), IPv6 통계(IPv6, ICMPv6, IPv6를 통한 TCP, IPv6를 통한 UDP 통계)를 표시합니다. netstat를 매개 변수 없이 사용하면 활성 TCP 연결을 표시합니다.

구문
netstat [-a] [-e] [-n] [-o] [-p Protocol] [-r] [-s] [Interval]

매개 변수
-a
모든 활성 TCP 연결과 컴퓨터가 수신하는 TCP 및 UDP 포트를 표시합니다.
-e
바이트 수 및 보내고 받은 패킷과 같은 이더넷 통계를 표시합니다. 이 매개 변수는 -s와 함께 사용할 수 있습니다.
-n
활성 TCP 연결을 표시합니다. 주소 및 포트 번호는 숫자로 표시되고 이름을 확인하는 작업은 수행하지 않습니다.
- o
활성 TCP 연결을 표시하고 각 연결의 프로세스 ID(PID)를 포함합니다. Windows 작업 관리자의 프로세스 탭에서 PID 기반 응용 프로그램을 찾을 수 있습니다. 이 매개 변수는 -a, -n 및 -p와 함께 사용할 수 있습니다.
-p Protocol
Protocol을 사용하여 지정한 프로토콜의 연결을 표시합니다. 이 경우 Protocol은 tcp, udp, tcpv6, udpv6이 될 수 있습니다. 매개 변수를 -s와 함께 사용하면 프로토콜이 통계를 표시합니다. Protocol은 tcp, udp, icmp, ip, tcpv6, udpv6, icmpv6, ipv6가 될 수 있습니다.
-s
프로토콜에 의해 통계를 표시합니다. 기본적으로 TCP, UDP, ICMP 및 IP 프로토콜에 대한 통계를 표시합니다. IPv6 프로토콜을 설치하면 IPv6를 통한 TCP, IPv6를 통한 UDP, ICMPv6, IPv6 프로토콜에 대한 통계가 표시됩니다. -p 매개 변수는 프로토콜의 집합을 지정하는 데 사용할 수 있습니다.
-r
IP 라우팅 테이블의 내용을 표시합니다. 이것은 route print 명령과 같습니다.
Interval
Interval초마다 선택한 정보를 다시 표시합니다. 통계를 다시 표시하지 않으려면 Ctrl+C를 누릅니다. 이 매개 변수를 생략하면 netstat는 선택한 정보를 한 번만 표시합니다.
/?
명령 프롬프트에서 도움말을 표시합니다.
설명
이 명령과 함께 사용되는 매개 변수는 슬래시(/) 대신 하이픈(-)을 앞에 붙여야 합니다.
netstat는 다음과 같은 정보에 대한 통계를 제공합니다.
Proto
프로토콜(TCP 또는 UDP) 이름입니다.

로컬 주소
사용되고 있는 로컬 컴퓨터의 IP 주소와 포트 번호입니다. -n 매개 변수를 지정하지 않으면 IP 주소 및 포트 이름에 해당하는 로컬 컴퓨터의 이름이 표시됩니다. 포트를 아직 설정하지 않은 경우 포트 번호가 별표(*)로 나타납니다.

외부 주소
소켓이 연결된 원격 컴퓨터의 IP 주소와 포트 번호. -n 매개 변수를 지정하지 않으면 IP 주소 및 포트에 해당하는 이름이 표시됩니다. 포트를 아직 설정하지 않은 경우 포트 번호가 별표(*)로 나타납니다.

(state)
TCP 연결 상태를 표시합니다. 가능한 상태는 아래와 같습니다.

CLOSE_WAIT

CLOSED

ESTABLISHED

FIN_WAIT_1

FIN_WAIT_2

LAST_ACK

LISTEN

SYN_RECEIVED

SYN_SEND

TIMED_WAIT

TCP 연결 상태에 대한 자세한 내용은 RFC 793을 참조하십시오.

이 명령은 인터넷 프로토콜(TCP/IP) 프로토콜이 네트워크 연결의 네트워크 어댑터 속성의 구성 요소로 설치된 경우에만 사용할 수 있습니다.

이더넷 통계 및 모든 프로토콜 통계를 표시하려면 다음과 같이 입력합니다.

netstat -e -s

TCP 및 UDP 프로토콜의 통계를 표시하려면 다음과 같이 입력합니다.

netstat -s -p tcp udp

활성 TCP 연결 및 프로세스 ID를 5초마다 표시하려면 다음과 같이 입력합니다.

nbtstat -o 5

숫자 형식을 사용하여 활성 TCP 연결 및 프로세스 ID를 표시하려면 다음과 같이 입력합니다.

nbtstat -n -o

* 옵션

  -a : 모든 연결 및 열린 포트를 확인한다. 리눅스의 -a 옵션과 동일.

  -b : 현재 연결이 어떤 프로그램이 사용중인지 표시한다. PID(프로세서 ID)도 표시된다. 리눅스의 -p 옵션과 동일.

  -e : 인터페이스의 통계치를 보여준다. 윈도우용은 기본적인것만 나오고 리눅스는 매우 자세히 나온다. 리눅스의 -i 옵션과 동일.

  -n : 주소 및 포트를 숫자 형식으로 표시. 리눅스의 -n 옵션과 동일.

  -o : 현재 연결이 어떤 프로그램이 사용중인지 PID(프로세서 ID)만 표시한다.

  -r : 라우팅 테이블을 표시한다. route print와 동일하다. 리눅스의 -r 옵션과 동일.

  -s : 프로토콜별 통계치를 보여준다. 리눅스의 -s 옵션과 동일.

  -v : -b 옵션과 같이 사용시 아주 자세히 어떤 파일들이 네트워크 연결에 쓰는지 볼 수 있다. 정보 수집을 하여 시간이 오래 걸린다.

  숫자 : 숫자값을 입력하면 해당 초만큼 간격으로 명령을 반복 실행한다. 정지는 Ctrl+C
[출처] 리눅스 명령어 - netstat (네트워크 연결 상태)|작성자 유미화



'개발 > Linux' 카테고리의 다른 글

[명령어] history 이전에 실행된 명령어 출력  (0) 2011.05.25
linux 명령어 - ln 심볼릭 링크  (0) 2011.05.25
linux에 mysql 설치하기  (0) 2010.01.05
vi 사용하기  (0) 2009.09.10
[linux] 시스템(하드웨어) 사양 보기  (0) 2009.02.18


** MySQL 설치
http://www.mysql.com/ 에서 자신이 원하는 버전을 다운받습니다. 다운받은 파일 => mysql-5.5.0-m2-linux-i686-glibc23.tar.gz
(참고 : 키보드를 치기가 귀찮으시면 중간에 tab을눌러 자동완성 하거나 ($tar xvf mysql-5.*) 과같에 Asterisk를 사용하면 간편하게 작업을 할수 있습니다. )

파일이 유저디렉토리에 깔려있다는 전제에서 터미널 입력 방법입니다.


# cd ~
# gzip -d mysql-5.5.0-m2-linux-i686-glibc23.tar.gz
# tar xvf mysql-5.5.0-m2-linux-i686-glibc23.tar

컴파일 과정이 필요없습니다.

# groupadd mysql                                                         <-- mysql 그룹생성
# useradd -g mysql mysql                                            <-- mysql 그룹 에 mysql 유저생성
# mv mysql-5.5.0-m2-linux-i686-glibc23 /usr/local     <-- 적당한 위치로 폴더를 옮깁니다.
# cd /usr/local                                                               <-- 위치로 이동합니다.
# ln -s mysql-5.5.0-m2-linux-i686-glibc23 mysql        <-- 설정된 폴더이름과 mysql 디렉토리명을 동일화 합니다.
# cd mysql                                                                    <-- 위치로 이동합니다.
# chown -R mysql .                                                      <-- 파일 소유권 설정
# chgrp -R mysql .

# scripts/mysql_install_db --user=mysql
!위가 에러가 나는 경우
# scripts/mysql_install_db --user=mysql --no-defaults

# chown -R root .
# chown -R mysql data
# export PATH=$PATH:/usr/local/mysql/bin

--> 데몬 시작 : # mysqld_safe --user=mysql &
--> 접속        : # mysql -uroot -p암호
--> 데몬 종료 : # mysqladmin -uroot -p암호 shutdown

* 데몬 자동 시작
# gedit /etc/profile  => 맨 하단에 다음을 입력 => PATH = $PATH:/usr/local/mysql/bin
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

# chkconfig -add mysqld
!위가 안될경우
# apt-get install chkconfig

*확인
# netstat -n|p|grep 서비스명

*관리
# etc/init.d/mysqld [start|stop|restart]

출처 : http://blog.naver.com/labeldock?Redirect=Log&logNo=110077450


mysql innodb 설정

일반 2009.03.22 01:47:46
[레벨:13]휘즈 조회 수 5572 추천 수 0
innodb_data_home_dir = /var/lib/mysql/idb
- innodb 홈디렉터리 경로를 설정 합니다.
innodb_data_file_path = ibdata1:256M:autoextend:max:2000M
- 데티터 파일 옵션을 설정 합니다. 파일명 : 초기용량 : 자동증가 : 최대사이즈
innodb_log_group_home_dir = /var/lib/mysql/idb
innodb_log_arch_dir = /var/lib/mysql/idb
- 로그 디렉터리 정보
innodb_buffer_pool_size = 2G
- innodb에서 사용할 메모리 양으로 전체 메모리의 50~80% 정도로 설정
innodb_additional_mem_pool_size = 16M
innodb_log_file_size = 512M
- 로그 파일 사이즈로 버퍼풀 사이즈의 25% 정도로 설정
innodb_log_buffer_size = 2M
- 로그 버퍼 사이즈로 성능에 맞춰 로그를 기록하는 경우 크게 설정
innodb_flush_log_at_trx_commit = 2
- 커밋 로그 옵션으로 성능 최적화로 1분마다 저장되도록 2로 설정
innodb_lock_wait_timeout = 50
innodb_flush_method = O_DSYNC
- 성능을 위해 메모리에서 직접 액세스 하도록 설정


-----------------------------------------------
innodb를 재설정했을 때 db접근에 에러가 난다.
이때는 로그파일을 지우고 재시작한다.

'개발 > Linux' 카테고리의 다른 글

linux 명령어 - ln 심볼릭 링크  (0) 2011.05.25
linux - netstat  (0) 2011.02.14
vi 사용하기  (0) 2009.09.10
[linux] 시스템(하드웨어) 사양 보기  (0) 2009.02.18
[linux] Tomcat 설치  (0) 2009.02.15

vi 사용하기

개발/Linux2009. 9. 10. 14:39
1. vi 사용하기

커서 이동

명령 모드에서 h, j, k, l 키를 누르면 커서는 각각 왼쪽, 아래, 위, 오른쪽으로 한 칸 이동한다. 근래 vi 버전에서는 화살표 키를 사용해도 된다. h, j, k, l 키는 꽤나 편리한데, 일단 익숙해지면 키보드 가운데 줄에서 손을 떼지 않고도 커서를 움직일 수 있어서다. 현재 열어 놓은 파일에서 (화살표 키와) h, j, k, l을 사용해 커서를 이동해본다. h 키를 계속 두드려 행 맨 처음까지 이동해본다. 행 맨 처음에서 h 키를 계속 두드려도 커서가 이전 행으로 올라가지 않는다는 사실에 주목한다. 마찬가지로, 행 끝에서 l 키를 계속 두드려도 커서는 다음 행으로 넘어가지 않는다.

vi는 행 처음이나 마지막으로 커서를 단번에 이동하는 단축키도 제공한다. 0을 누르면 커서는 행 첫 번째 문자로 이동하고, $을 누르면 커서는 행 마지막 문자로 이동한다. 직접 실행해본다. vi에는 편리한 이동 명령이 아주 많아 (more나 less 명령처럼) 파일 보기 프로그램(pager)으로도 훌륭하다. 파일 보기 프로그램으로 vi를 활용하면 이동 명령을 기억하기도 쉬워진다.

이전 페이지나 다음 페이지로 이동하려면 ^F(컨트롤-F)와 ^B(컨트롤-B) 키를 사용한다. (vim과 같은) 근래 vi 버전에서는 Pg Up 키와 Pg Dn 키를 사용해도 된다.

낱말 단위로 커서 이동

vi에서는 낱말(word) 단위로도 커서를 이동할 수 있다. 다음 낱말 첫 번째 문자로 커서를 이동하려면 w 키를 누른다. 다음 낱말 마지막 문자로 커서를 이동하려면 e 키를 누른다. 이전 낱말 첫 번째 문자로 커서를 이동하려면 b 키를 누른다. 직접 실행해본다.

낱말 이동 명령을 연습하다 보면 vi가 "foo-bar-oni" 같은 표현을 다섯 낱말로 인식한다는 사실이 드러난다. 기본적으로 vi가 공백이나 구두점으로 낱말을 구분하기 때문이다. 즉 vi는 foo-bar-oni라는 표현을 "foo", "-", "bar", "-", "oni"라는 다섯 낱말로 인식한다.

그렇지만 foo-bar-oni를 한 낱말로 인식하고 싶을 때도 있다. 다행스럽게도 vi는 "큰 낱말(big word)"이라는 개념도 인식한다. 즉 vi에서 foo-bar-oni는 낱말(word) 수가 다섯 개지만 큰 낱말(big word) 수는 한 개다.

다음 큰 낱말과 이전 큰 낱말로 커서를 이동하려면 낱말 이동 명령을 대문자로 바꾼 키를 사용한다. 즉 W 키는 다음 큰 낱말 첫 번째 글자로 커서를 이동한다. E 키는 다음 큰 낱말 마지막 문자로 커서를 이동하고, B 키는 이전 큰 낱말 첫 번째 글자로 커서를 이동한다. 연습해본다. 차이를 이해할 때까지 낱말 이동 명령과 큰 낱말 이동 명령을 실행하고 비교해본다.

더 큰 단위로 커서 이동

컨닝 페이퍼를 만들기 전에 명령 몇 개만 더 살펴보자. ( 키와 ) 키는 이전 문장과 다음 문장 처음으로 커서를 이동한다. { 키와 } 키는 현재 문단과 다음 문단 시작으로 커서를 이동한다. 연습해본다.

종료

지금까지 기본적인 커서 이동 명령을 살펴보았는데, 알아야 할 명령이 몇 개 더 있다. :q 명령은 vi를 종료한다. 이 명령이 먹히지 않으면 실수로 파일을 수정했다는 뜻이다. 수정한 내용을 버리고 vi를 종료하려면 :q! 명령을 입력한다. 그러면 명령 프롬프트로 돌아간다.

vi에서 콜론(:)으로 시작하는 명령은 모두 ex 모드 명령이다. 이는 vi가 “ex”라는 비시각적인(non-visual) 편집기를 내장하기 때문이다. ex는 sed와 비슷하게 행 단위로 텍스트를 편집하는 프로그램이다. 또한, 방금 보았듯이 vi를 종료할 때도 ex 명령을 사용한다. 명령 모드에서 Q 키를 누르면 vi는 ex 모드로 전환하고 : 프롬프트가 뜬다. 이 때 엔터 키를 누르면 전체 화면이 위로 이동한다. ex 모드에서 vi 모드로 돌아가려면 그냥 vi만 입력한 후 엔터 키를 누른다.


2. 편집과 저장

커서 이동

계속해서 vi 명령을 살펴보자. 명령 모드에서 <행 번호>G를 입력하면 커서는 해당 행으로 이동한다. 파일 첫 번째 행으로 이동하려면 1G를 입력한다. 여기서 G는 대문자라는 사실에 주의한다.

특정한 텍스트 패턴을 찾아서 커서를 이동하려면 /regexp를 입력하고 엔터 키를 누른다. 여기서 regexp 대신 찾으려는 정규 표현식을 입력한다. 이 때 커서는 다음에 나타나는 텍스트 패턴으로 이동한다. 정규 표현식을 모른다고 당황할 필요는 없다. /foo라고 입력하면 다음에 나타나는 foo로 커서가 이동한다. 단, ^, ., $, \ 문자는 정규 표현식에서 사용하는 특수 문자이므로 주의한다. ^, ., $, W 문자가 들어가는 패턴을 찾으려면 문자 앞에 \ 문자를 붙인다. 예를 들어, /foo\.gif는 다음으로 나타나는 "foo.gif"를 찾는다.

검색을 계속 진행하려면, 즉 현재 커서 이후에 나타나는 패턴을 찾으려면, n 키를 누른다. 검색을 역으로 진행하려면, 즉 현재 커서 이전에 나타나는 패턴을 찾으려면, N 키를 누른다. vi 편집기에서 직접 연습해본다.

저장, 다른 이름으로 저장

앞서 :q 명령을 소개하면서 ex 명령을 설명했다. 변경한 내용을 저장하려면 :w를 입력한다. 변경한 내용을 다른 파일에 저장하려면 :w filename.txt를 저장한다. 파일을 저장한 후 vi를 종료하려면 :x 또는 :wq를 입력한다.

(elvis 같은 고급 vi 편집기에서도 마찬가지지만) vim에서는 동시에 버퍼 여러 개를 열어둘 수 있다. 새 창에서 파일을 열려면 :sp filename.txt를 입력한다. 그러면 현재 창이 나뉘면서 새 창에 filename.txt가 열린다. 창 사이를 전환하려면 ^w^w(컨트롤-w 두 번)을 입력한다. :q, :q!, :w, :x 명령은 현재 활성화된 창에만 적용된다.

간단한 편집

이제 간단한 편집 명령을 익힐 차례다. “간단한” 명령이라고 칭한 이유는 명령을 실행한 후에도 명령 모드를 유지하기 때문이다. 일부 복잡한 편집 명령은 자동으로 삽입 모드로 전환한다. 삽입 모드에서는 키보드로 입력하는 문자가 그대로 삽입된다. 복잡한 편집 명령은 나중에 다룬다.

지금은 커서를 옮겨가면서 x 키를 계속 눌러본다. 커서가 놓인 위치에서 현재 글자가 삭제된다는 사실을 발견하리라. 이제 문단 중간으로 커서를 옮긴 다음 (대문자) J 키를 누른다. 직접 눌러보면 알겠지만, J 키를 누르면 다음 행이 현재 행 끝으로 연결된다. 이제 문자 위에 커서를 놓고 r 키를 누른 후 새 문자 하나를 입력한다. 그러면 원래 문자가 새 문자로 교체된다. 마지막으로, 커서를 행 아무 데나 놓은 후 dd를 입력한다. 그러면 현재 커서가 놓인 행이 삭제된다.

반복과 삭제

. 키를 누르면 vi는 직전에 실행한 편집 명령을 다시 실행한다. dd....를 입력하면 행 네 개가 지워진다. J....는 행 네 개를 결합한다. vi가 제공하는 또 다른 편리한 단축키라 하겠다.

텍스트를 지우려면 d 명령과 이동 명령을 조합한다. 예를 들어, dw 명령은 현재 커서 위치에서 다음 낱말 시작까지 삭제한다. d) 명령은 현재 커서 위치에서 다음 문장 끝까지 삭제하고, d} 명령은 현재 커서 위치에서 문단 끝까지 지운다. 익숙해질 때까지 d 명령과 다른 편집 명령을 조합해서 연습해본다.

실행 취소!

삭제 명령을 익혔으니 실행 취소 명령도 알아두는 편이 좋겠다. 원래 vi 버전에서는 u 키를 누르면 가장 최근에 가한 변경만 복원한다. 그러나 (vim 같은) 근래 vi 버전에서는 u 키를 계속 누르면 파일에 가한 변경을 계속 거슬러 올라가면서 복원해준다. d 명령과 u 명령을 조합해 연습해본다.


3. 삽입모드

삽입 모드 이해

지금까지는 vi에서 커서를 이동하는 방법, 파일 입출력을 수행하는 방법, 기본적인 편집 작업을 수행하는 방법을 다루었다. 그런데 아직도 파일에 텍스트를 맘대로 입력하는 방법은 다루지 않았다. 의도적으로 뒤로 미루었는데, 처음에는 vi 삽입 모드가 다소 복잡해 보이기 때문이다. 그러나 삽입 모드에 익숙해지고 나면 삽입 모드의 복잡성(과 유연성)은 오히려 장점으로 작용한다.

vi 삽입 모드에서는, 다른 시각적 편집기와 마찬가지로, 화면에 텍스트를 맘대로 입력할 수 있다. 파일을 수정한 후 명령 모드로 돌아오려면 Esc 키를 누른다. 명령 모드에서 삽입 모드로 전환하려면 i 키나 a 키를 누른다. i 키를 누르면 입력하는 텍스트는 현재 커서 위치 앞에 삽입된다. a 키를 누르면 입력하는 텍스트는 현재 커서 위치 다음에 삽입된다. 텍스트를 입력한 후 명령 모드로 돌아오려면 Esc 키를 눌러야 한다는 사실에 주의한다.

삽입 모드의 장점

a 키와 i 키 명령을 직접 실행해본다. a 키나 i 키를 누르고 텍스트를 입력한 후 Esc 키를 눌러 명령 모드로 돌아온다. 다음으로는 a 키나 i 키를 누르고 텍스트를 입력한 후 Enter 키를 눌러본다. 이번에는 삽입 모드에서 화살표 키나 delete 키를 눌러 결과를 살핀다. 화살표 키나 delete 키를 사용하면 삽입 모드와 명령 모드를 오가지 않고도 상당한 편집 작업을 수행할 수 있다.

삽입 옵션

삽입 모드로 전환하는 편리한 방법 몇 가지를 더 소개한다. (대문자) A 키를 누르면 현재 커서 위치에 상관 없이 현재 행 끝에 텍스트를 첨부하기 시작한다. 마찬가지로, (대문자) I 키를 누르면 현재 행 시작부터 텍스트를 첨부하기 시작한다. (소문자) o 키를 누르면 현재 행 다음에 새 행을 만든다. (대문자) O 키는 현재 행 직전에 새 행을 만든다. 현재 행 전체를 새 행과 교체하려면 cc를 입력한다. 현재 위치에서 행 끝까지 내용을 교체하려면 c$를 입력한다. 현재 위치에서 행 시작까지 내용을 교체하려면 c0를 입력한다.

위 명령은 모두 특정한 작업을 수행한 후 삽입 모드로 전환한다. 즉 텍스트를 입력한 후에는 Esc를 눌러야 명령 모드로 돌아온다.

텍스트 변경

방금 cc, c0, c$ 등 c 명령을 언급했다. cc는 dd처럼 c 명령의 특수한 형태다. c0와 c$ 명령은 c 명령과 커서 이동 명령을 조합한 예다. 여기서 c 명령은 d 명령과 비슷하게 동작한다. 단, c 명령은 텍스트를 지우고 입력하도록 삽입 모드로 전환한다는 점이 다르다. cW, ce, c(. 등 c 명령과 커서 이동 명령을 다양하게 조합하여 연습해본다.

명령 조합

vi에서 명령을 조합하기 시작하면 vi는 더욱 강력해진다. d{나 cw 등이 좋은 예다. 커서 이동 명령에 숫자를 조합해도 된다. 예를 들어, 3w 명령을 입력하면 커서는 오른쪽 낱말 세 개를 건너뛴다. 12b, 4j 등도 좋은 예다.

(숫자)(커서 이동 명령) 조합에 더하여 d나 c를 숫자나 커서 이동 명령과 조합해도 된다. 즉 d3w는 오른쪽에 있는 낱말 세 개를 삭제한다. d2j는 현재 행과 다음 행 두 개를 삭제한다. c, d 명령 조합을 실습하면서 vi 편집이 얼마나 강력하고 간결한지 느껴본다. 이러한 명령 조합을 완전히 익히면 번개같은 속력으로 파일을 편집하게 되리라.


4. 생산성 기능

지금까지...

지금까지 커서를 이동하는 방법, 파일을 저장하고 vi를 종료하는 방법, 텍스트를 간단히 편집하고 삭제하는 방법, 삽입 모드로 전환하는 방법을 살펴보았다. 지금까지 살펴본 명령과 컨닝 페이퍼를 동원하면 vi로 하지 못할 작업이 거의 없으리라.

그러나 vi에는 이 외에도 강력한 명령이 매우 많다. 이 단원에서는 텍스트를 잘라내고, 복사하고, 붙여넣고, 검색하고, 교체하는 방법과 자동 들여쓰기 기능을 사용하는 방법을 소개한다. 이러한 명령을 활용하면 vi 사용이 훨씬 재미있어지고 생산성도 높아진다.

시각적 모드

텍스트를 잘라내 붙이려면 시각적 모드가 가장 편하다. 시각적 모드는 (vim이나 elvis 같은) 최근 vi 버전이 제공하는 특수 모드다. 시각적 모드는 "텍스트 선택(highlight text)" 모드로 생각해도 좋다. 일단 텍스트를 선택한 후에는 삭제하거나 복사하여 붙여넣을 수 있다.

시각적 모드로 전환하려면 v 키를 입력한다. 그러면 그림 3과 같이 편집기 왼쪽 하단에 VISUAL이라는 낱말이 표시된다. 시각적 모드에서 이동 명령이나 화살표 키로 커서를 이동하면 해당 텍스트가 선택된다. 만약 윈도우 관리자가 응용 프로그램에 대한 마우스 사용을 허가한다면 마우스 왼쪽 버튼을 클릭한 채 끌어서 텍스트를 선택해도 좋다.

vi 시각적 모드

vi 시각적 모드


일단 텍스트를 선택하고 나면 잘라내거나 복사할 수 있다. 텍스트를 복사하려면 y 키를 누른다. (여기서 y는 “yank”를 의미한다.) 텍스트를 잘라내려면 d 키를 누른다. 그러면 명령 모드로 돌아온다. 이제 복사한 텍스트나 잘라낸 텍스트를 삽입할 위치로 커서를 이동한 후 p 키나 P 키를 누른다. p 키를 누르면 텍스트가 커서 앞에 삽입된다. P 키를 누르면 텍스트가 커서 뒤에 삽입된다. 짜잔!! 이렇게 복사/잘라내기와 붙여넣기가 끝났다. 다음으로 넘어가기 전에 잘라내기/붙여넣기를 여러 차례 연습해본다.

텍스트 교체

텍스트 패턴을 교체하려면 ex 모드를 사용한다. 현재 행에서 첫 번째로 나타나는 패턴을 교체하려면 :s/regexp/replacement/를 입력하고 엔터 키를 누른다. 여기서 regexp는 찾으려는 패턴이고 replacement는 교체할 문자열이다. 현재 행에서 일치하는 패턴을 모두 교체하려면 :s/regexp/replacement/g를 입력하고 엔터 키를 누른다. 파일 내에서 일치하는 패턴을 모두 교체하려면 :%s/regexp/replacement/g를 입력하고 엔터 키를 누른다(대개 행보다는 파일에서 텍스트를 교체하려는 경우가 많다). 파일 내에서 일치하는 패턴을 모두 교체하면서도 교체하려는 패턴마다 확인을 받으려면 :%s/regexp/replacement/gc를 입력한 후 엔터 키를 누른다(여기서 c는 "confirm"을 뜻한다).

들여쓰기

vi는 자동 들여쓰기를 지원한다. 프로그램 원시 코드를 편집할 때 편리한 기능이다. (vim과 같은) 최근 vi 버전 대부분은 (.c 파일과 같은) 소스 파일을 편집할 때 자동 들여쓰기 모드를 자동으로 활성화한다. 자동 들여쓰기 모드가 활성화된 상태에서 ^d(컨트롤-d)를 입력하면 현재 들여쓰기가 한 단계 왼쪽으로 밀린다. ^t(컨트롤-t)를 입력하면 현재 들여쓰기가 한 단계 오른쪽으로 밀린다. 자동 들여쓰기 모드를 수동으로 활성화하려면 :se autoindent라는 ex 명령을 사용한다. 또한 들여쓰기 탭 크기를 변경하려면 :set tabstop 명령을 사용한다. :set tabstop=4가 가장 많이 쓰이는 설정이다.




컨닝페이퍼

컨닝페이퍼


출처 : http://www.ibm.com/developerworks/kr/library/tutorial/l-vi/index.html




 



'개발 > Linux' 카테고리의 다른 글

linux - netstat  (0) 2011.02.14
linux에 mysql 설치하기  (0) 2010.01.05
[linux] 시스템(하드웨어) 사양 보기  (0) 2009.02.18
[linux] Tomcat 설치  (0) 2009.02.15
[linux] JAVA 설치  (0) 2009.02.15