'Linux'에 해당되는 글 16건

  1. 2014.04.05 free 메모리 보기
  2. 2014.04.05 Linx 명령어
  3. 2014.04.05 ps 프로세스
  4. 2014.04.05 I/O 스케줄러
  5. 2014.03.24 Ubuntu jdk 1.7 설치하기
  6. 2010.08.14 Telnet, Proftp 설치

free 메모리 보기

Linux 2014. 4. 5. 19:06
반응형

1. 메모리 보기

# free


                   total       used          free     shared    buffers     cached

Mem:       3079912    2870192      209720             0     260776     1637140

-/+ buffers/cache:     972276    2107636

Swap:      5237184             0    5237184


2. 유저 메모리


    유저 메모리 = 디스크 캐시 ( buffers + cached )   +   AnonPages

           * 디스크 캐시에는 Shmem (tmpfs) 가 포함되어 있음


    유저 메모리 = File-backend 메모리 ( Active(file) + Inactive(file) )   +   

                       Anonymous 메모리 ( Active(anon) + Inactive (anon) )

           *  Anonymous 메모리에는 Shmem (tmpfs) 가 포함되어 있음



3. 커널 메모리


    커널 메모리 = MemTotal - (MemFree + Active + Inactive + Unevictable)


    커널 메모리 = Slab + VmallocUsed (ioremap 제외) + KernelStack + PageTebles



4. VmallocUsed 에서 ioremap 제외하고 계산하는 방법

# cat /proc/vmallocinfo | grep -v "ioremap" | awk '{print $2}' | paste -s -d "+" | bc


byte 로 결과 값이 출력됨


# echo "(" $(cat /proc/vmallocinfo | grep -v "ioremap" | awk '{print $2}' | paste -s -d "+") ") / 1024" | bc


KB 로 출력됨



5. pmap

# pmap -x 1154              (sshd 의 프로세스 id 가 1154 임)


출력 예)

Address           Kbytes     RSS   Dirty Mode   Mapping

00007f55459c7000       0      16       0 r-x--  libnss_files-2.15.so

00007f55459d3000       0       0       0 -----  libnss_files-2.15.so

00007f55489a7000       0       4       4 rw---  libwrap.so.0.7.6

00007f55489a8000       0     112       0 r-x--  ld-2.15.so

00007f5548bad000       0      40      40 rw---    [ anon ]

00007f5548bc8000       0       8       8 rw---    [ anon ]

00007f5548bca000       0       4       4 r----  ld-2.15.so

00007f5548bcb000       0       8       8 rw---  ld-2.15.so

00007f5548bcd000       0     232       0 r-x--  sshd

00007f5548e47000       0      12      12 r----  sshd

00007f5548e4a000       0       4       4 rw---  sshd

00007f5548e4b000       0      36      36 rw---    [ anon ]

00007f5548e5b000       0      68      68 rw---    [ anon ]

00007fff2b5e7000         0      20      20 rw---    [ stack ]

00007fff2b687000         0       4       0 r-x--    [ anon ]

ffffffffff600000               0       0       0 r-x--    [ anon ]


[anon] 으로 표시되는 것이 AnonPages 즉 유저 영역 메모리로 malloc 등으로 확보한 메모리를 말한다.

Kbytes 는 논리 어드레스 이고 RSS 는 물리 메모리 용량(KB) 이다.





반응형
Posted by seungkyua@gmail.com
,

Linx 명령어

Linux 2014. 4. 5. 17:38
반응형

1. wait

   - 쉘에서 wait 커맨드를 실행한 곳에서 슬립상태로 대기하며 백그라운드에서 실행 중인 자식 프로세스가 완전히 종료되어 CHLD 시그널이 통지되기를 기다린다. 모든 자식 프로세스가 종료되면 wait 의 다음 처리를 진행한다.


2. redirect

# command >test.log 2>test.err &


> : 표준출력은 test.log, 에러는 test.err 에 저장한다.

& : 백그라운드 프로세스로 실행한다.


# command >test.log 2>&1 &


2>&1 : 에러출력을 표준출력에 출력한다.


# command >/dev/null 2>&1 &


/dev/null : 버린다.


# nohup command >/test.log 2>&1 &


nohup : bash 프로세스는 종료되면 자식 프로세스에 HUP 시그널을 전송한다. HUP 시그널은 프로세스 종료

            시그널이므로 bash 가 끝나면 백그라운드로 돌리는 자식 프로세스도 종료된다.

            nohup 은 bash 프로세스가 종료되더라도 HUP 시그널을 보내지 말라는 의미


3. Ctrl + Z

   - 일시 정지라는 의미로 vi 실행 중에 잘못하여 Ctrl + Z 를 하면 에디터 화면이 없어서지고 명령 프롬프트로 떨어짐

      이 때 fg 커맨드를 실행하면 다시 vi 에디터 화면으로 이동

   - 포그란운드 실행 커맨드에서 Ctrl + Z 로 일시 정지 후에 bg 를 실행하면 백그라운드 실행으로 바꿀 수 있음


4. 파이프라인 (|)

    - 프로세스 A | 프로세스 B  : 프로세스 A 의 표준출력을 받아서 프로세스 B 의 표준입력으로 처리한다.


5. tr, cut, grep

# ps -ef | head -5


출력 예)

UID        PID  PPID  C STIME TTY          TIME CMD

root         1        0   0  16:22   ?              00:00:02 /sbin/init

root         2        0   0  16:22   ?              00:00:00 [kthreadd]

root         3        2   0  16:22   ?              00:00:00 [ksoftirqd/0]

root         5        2   0  16:22   ?              00:00:00 [kworker/u:0]


head -5 : 처음 5줄만 출력


# ps -ef | head -5 | tr -s " " | cut -d " " -f 2 | grep -v "PID"


출력 예)

1

2

3

5


tr -s " " : 여러 공백이 있으면 하나의 공백으로 변환

cut -d " " -f 2 : -d 로 지정한 문자를 기준으로 구분(여기서는 공백) -f 로 지정한 위치필드(여기서는 2) 출력

grep -v "PID" : -v 뒤에 지정한 조건은 제외하고 출력


# ps -ef | grep -E -v "^(root|UID)"


grep -E : 확장 정규표현 식을 사용

^(root|UID) : 처음에 오는 문자가 root 이거나 UID

-v : 일치하는 조건은 제외


6. awk

# ps -ef | head -5 | awk '{print $2}' | grep -v "PID"


awk '{print $2}' : 연결 공백을 구분 문자로 2번째 위치필드를 출력


# cat /etc/passwd | awk -F ":" '{print $1}'


awk -F ":" '{print $1}' : -F 로 지정한 문자를 기준으로 구분(여기서는 :) 첫번째 필드를 출력


7. ps

# ps -e --no-headers -o pid | head -5


출력 예) : 프로세스 id 가 우측 정렬로 되어 있어 앞에 공백이 있음

    1

    2

    3

    5

    6


--no-headers : 헤더는 출력에서 제외

-o pid : pid 만 출력


8. sed

# ps -e --no-headers -o pid | head -5 | sed "s/^ *//"


출력 예)

1

2

3

5

6


s : 변환

/ : 시작

^ : 첫행

(스페이스)* : 정규표현으로 공백이 여러개(*)

/ : 끝

(Null)/ : null 로 치환


# ps -ef | grep -E -v "^(root|UID)" | sed "s/^/kill -9 /"


s/^/kill -9 : 처음문자 앞에 kill -9 를 삽입


9. $()

   - $() 안의 커맨드 출력 결과를 넣어라

# ps -ef | wc -l


출력 예)

196


# ps -ef | head -$(ps -ef |wc -l)


ps -ef | wc -l 의 결과 즉, 196 을 넣어서 ps -ef | head -196 과 같은 뜻이 됨


10. yes

# yes "kill" | head -5


출력 예)

kill

kill

kill

kill

kill


yes "kill" : kill 이라는 문자를 계속 출력


11. pgrep

# pgrep -v -u root


유저가 root 가 아닌 pid 를 출력


12. pkill

# pkill -9 -v -u root


유저가 root 가 아닌 모든 프로세스를 kill -9 로 죽인다.


13. tcp dump

# tcpdump -i any -vv 'tcp port 80' -w hostname.out

혹은

# tcpdump -i br100 -n -v udp port 53


14. tcp time_wait 세션 개수 보기

# netstat -an | grep -i wait | wc -l



반응형
Posted by seungkyua@gmail.com
,

ps 프로세스

Linux 2014. 4. 5. 17:29
반응형

1. 프로세스 조회

# ps -ef | grep ssh[d]


출력 예)

root       1154      1  0 16:23 ?         00:00:00 /usr/sbin/sshd -D

root       3424  1154  0 16:41 ?        00:00:00 sshd: stack [priv]

stack     3578  3424  0 16:41 ?        00:00:00 sshd: stack@pts/0


-ef : 출력을 유저 id, 프로세스 id, 부모 프로세스 id 순으로 표시한다.

[]  : grep 자기 자신에 대한 명령은 제외한다.


# ps aux | grep ssh[d]


출력 예)

root       1154  0.0  0.0  50036  2932 ?        Ss   16:23   0:00 /usr/sbin/sshd -D

root       3424  0.0  0.1  92304  3984 ?        Ss   16:41   0:00 sshd: stack [priv]

stack     3578  0.0  0.0  92304  1848 ?        S     16:41   0:00 sshd: stack@pts/0


S : Sleep

Z : 좀비 프로세스   (끝에 <defunct> 라 표시)



반응형
Posted by seungkyua@gmail.com
,

I/O 스케줄러

Linux 2014. 4. 5. 17:20
반응형

1. I/O 스케줄러의 종류

   - noop (No Optimization) : 1개의 sub queue 를 가지고 순서대로 처리

   - cfg (Complete Fair Queuing) : 64개의 sub queue 로 분배하여 각 프로세스마다 공평하게 처리

   - deadline(Deadline) : Read sub queue 와 Write sub Queue 를 가진다. 

   - anticipatory : deadline 기능에 다음에 올 요청을 예상하는 기능을 추가


2. 특정 디바이스 (sda) 에 대한 I/O 스케줄러 변경

# cat /sys/block/sda/queue/scheduler        (스케줄러 조회)

# echo "cfg" > /sys/block/sda/queue/scheduler       (스케줄러를 cfg 로 변경)


3. 시스템 전체 I/O 스케줄러 변경하려면 /boot/grub 아래의 grub 파일을 변경해야 한다.

    예) elevator=deadline 으로 지정


4. SAN 과 같이 외부 디스크 장치를 사용하는 경우에는 LUN 에 대해서 deadline 스케줄러가 cgf 보다 더 효과적이다.


5. ionice 를 활용한 프로세스 스케줄러 조정

# ionice -c 1 dd if=/dev/zero of=test bs=1M count=500 oflag=direct &


-c 1 : Real time

-c 2 : Best effort

-c 3 : Idle


/dev/zero : 바이트 코드 0 (NULL) 값

oflag=direct : 디스크 캐시를 사용하지 않음




반응형
Posted by seungkyua@gmail.com
,
반응형

1. 최신 버전의 JDK 다운로드 : jdk-7u51-linux-x64.tar.gz

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html


2. 압축을 푼 후 /usr/local/jdk1.7.0_51/ 로 복사  (root.root 권한으로 변경)


3. vi /etc/profile 에 경로 추가

export JAVA_HOME=/usr/local/jdk1.7.0_51

PATH="$JAVA_HOME/bin:$PATH"

반응형
Posted by seungkyua@gmail.com
,

Telnet, Proftp 설치

Linux/Ubuntu 2010. 8. 14. 23:57
반응형
텔넷은 설치가 쉬었는데.. Proftp 는 정말 삽질 많이 했습니다..^^

//----------------------------------------
//--  Telnet 설치
//----------------------------------------
# sudo apt-get install xinetd
# sudo apt-get install telnetd

//------- telnet을 xinetd에 추가
# vi /etc/xinetd.conf
defaults
{
}

service telnet
{
   disable = no
   flags = REUSE
   socket_type = stream
   wait = no
   user = root
   server = /usr/sbin/in.telnetd
   log_on_failure += USERID
}

//------- xinetd 재시작
# service xinetd restart

문제가 발생하면 다음의 로그를 보면 됩니다.
# tail -f /var/log/syslog

//----------------------------------------
//--  Proftpd 설치
//----------------------------------------
# sudo apt-get install proftpd

화면에 standalone 과 xinetd 선택이 나오면 xinetd 를 선택합니다.

//------- proftpd을 xinetd에 추가
# vi /etc/xinetd.conf

service ftp
{
   disable = no
   flags = REUSE
   socket_type = stream
   wait = no
   user = root
   server = /usr/sbin/proftpd
   log_on_success += DURATION USERID
   log_on_failure += USERID
   nice = 10
}

//------- xinetd 재시작
# service xinetd restart

//------- 방화벽 열기
# sudo ufw allow 21/tcp


반응형
Posted by seungkyua@gmail.com
,