반응형

ubuntu 12.04 LTS 기반으로 설치


1. Java 설치

    http://www.ahnseungkyu.com/139


2. 패키지 설치

$ sudo apt-get install build-essential maven cmake libssl-dev


3. proxy 를 사용한다면 다음을 수정

$ vi /home/stack/.m2/settings.xml


<settings>

  <proxies>

    <proxy>

      <active>true</active>

      <protocol>http</protocol>

      <host>xx.xx.xx.xx</host>

      <port>8080</port>

      <nonProxyHosts>localhost|127.0.0.1|192.168.75.136|192.168.230.136|ubuntu</nonProxyHosts>

...


$ cd /Hadoop-src/hadoop-2.4.0-src/hadoop-hdfs-project/hadoop-hdfs-httpfs/downloads

$ wget http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.36/bin/apache-tomcat-6.0.36.tar.gz


$ keytool -v -alias mavensrv -import \

> -file /usr/share/ca-certificates/extra/XXX.crt \

-keystore trust.jks


4. protocol buffer 소스 다운로드, 컴파일, 설치 (2.5 이상을 설치)

$ wget https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz

$ tar xvfz protobuf-2.5.0.tar.gz

$ cd protobuf-2.5.0

$ ./configure

$ make

$ sudo make install                              # /usr/local/lib 에 관련 라이브러리가 설치됨

$ sudo ldconfig


5. Hadoop 소스 다운로드 및 패키징

$ wget http://apache.mirror.cdnetworks.com/hadoop/common/hadoop-2.4.0/hadoop-2.4.0-src.tar.gz

$ tar xvfz hadoop-2.4.0-src.tar.gz

$ cd hadoop-2.4.0-src

$ mvn package -Pdist,native -DskipTests -Dtar -X


6. 소스 파일 및 컴파일 된 바이너리 파일 찾기

$ cd ./hadoop-dist/target


$ cp -R ./hadoop-2.4.0/ ~/.


7. 하둡 환경변수 설정

$ vi ~/.bashrc


# Hadoop

export HADOOP_PREFIX="/home/stack/hadoop-2.4.0"

export PATH=$PATH:$HADOOP_PREFIX/bin

export PATH=$PATH:$HADOOP_PREFIX/sbin

export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}

export HADOOP_COMMON_HOME=${HADOOP_PREFIX}

export HADOOP_HDFS_HOME=${HADOOP_PREFIX}

export YARN_HOME=${HADOOP_PREFIX}


# Native Path

export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native"


$ source ~/.bashrc


8. local 에서 ssh 자동 접속 설정

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys


9. hadoop-env.sh 설정

$ vi $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh


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

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_PREFIX/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native"


10. yarn-env.sh 설정

$ vi $HADOOP_PREFIX/etc/hadoop/yarn-env.sh


export HADOOP_YARN_USER=${HADOOP_YARN_USER:-yarn}

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_PREFIX/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native"


11. Hadoop 데이터 및 시스템 파일을 저장할 디렉토리 생성 (hdfs-site.xml, mapred-site.xml 파일 참조)

$ mkdir -p ${HADOOP_PREFIX}/hadoop/dfs/name

$ mkdir -p ${HADOOP_PREFIX}/hadoop/dfs/data

$ mkdir -p ${HADOOP_PREFIX}/hadoop/mapred/system

$ mkdir -p ${HADOOP_PREFIX}/hadoop/mapred/local


12. core-site.xml 설정

$ vi $HADOOP_PREFIX/etc/hadoop/core-site.xml


<configuration>

    <property>

        <name>fs.default.name</name>

        <value>hdfs://localhost:9000</value>

        <final>true</final>

    </property>

</configuration>


13. hdfs-site.xml 설정

$ vi $HADOOP_PREFIX/etc/hadoop/hdfs-site.xml


<configuration>

    <property>

        <name>dfs.namenode.name.dir</name>

        <value>file:/home/stack/hadoop-2.4.0/hadoop/dfs/name</value>

        <final>true</final>

    </property>


    <property>

        <name>dfs.datanode.data.dir</name>

        <value>file:/home/stack/hadoop-2.4.0/hadoop/dfs/data</value>

        <final>true</final>

    </property>


    <property>

        <name>dfs.permissions</name>

        <value>false</value>

    </property>

</configuration>


14. mapred-site.xml 설정

$ cp $HADOOP_PREFIX/etc/hadoop/mapred-site.xml.template $HADOOP_PREFIX/etc/hadoop/mapred-site.xml

$ vi $HADOOP_PREFIX/etc/hadoop/mapred-site.xml


<configuration>

    <property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

    </property>


    <property>

        <name>mapred.system.dir</name>

        <value>file:/home/stack/hadoop-2.4.0/hadoop/mapred/system</value>

        <final>true</final>

    </property>


    <property>

        <name>mapred.local.dir</name>

        <value>file:/home/stack/hadoop-2.4.0/hadoop/mapred/local</value>

        <final>true</final>

    </property>

</configuration>


15. yarn-site.xml 설정

$ vi $HADOOP_PREFIX/etc/hadoop/yarn-site.xml


<configuration>


<!-- Site specific YARN configuration properties -->

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>


    <property>

        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

        <value>org.apache.hadoop.mapred.ShuffleHandler</value>

    </property>

</configuration>


16. NameNode 포맷

hdfs namenode -format


17. 데몬 실생

$ cd ${HADOOP_PREFIX}/sbin


# hdfs 데몬 실행

$ start-all.sh


# yarn 데몬 실행

$ start-yarn.sh


18. 하둡 데몬 확인 (Pseudo-Distributed Mode 일 때 5개가 떠 있어야 함)

$ jps


13861 NameNode                             # 네임노드

14347 SecondaryNameNode              # 세컨더리 네임노드

14070 DataNode                               # 데이터 노드

14526 ResourceManager                  # yarn 리소스 매니저 (네임노드)

14745 NodeManager                        # yarn 노드 매니저 (데이터노드)


# yarn Resource Manager 접속

http://localhost:8088


# yarn Node Manager 접속

http://localhost:8042/node


# 네임노드 접속

http://localhost:50070


# 노드 리포트

$ hdfs dfsadmin -report





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

1. compute host 간의 libvirt 버전이 동일해야 한다.

2. "libvirtd -d -l" 옵션으로 떠 있어야 한다.


# vi /etc/libvirt/libvirtd.conf

listen_tls = 0

listen_tcp = 1

auth_tcp = "none"


# vi /etc/init/libvirt-bin.conf

env libvirtd_opts="-d -l"


# vi /etc/default/libvirt-bin

libvirtd_opts=" -d -l"


sudo service libvirt-bin restart


3. nova.conf 의 "send_arp_for_ha" flag가 True로 셋팅되어야 함


# vi /etc/nova/nova.conf

send_arp_for_ha=True

#force_config_drive = always

block_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE


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

linux 에서 vlan 을 생성하고 삭제하는 명령어


1.  vlan101 이름으로 101 vlan 을 eth0 에 만든다.

# ip link add link eth0 name vlan101 type vlan id 101

# ip -d link show vlan101

# ip link set vlan101 up


2. vlan101 을 삭제한다.

# ip link set vlan101 down

# ip link delete vlan101


※ bridge 와 device interface 연결은 brctl show 로 연결을 볼 수 있지만,

vlan 은 ip addr show 로 보여지는 vlan101@eth0 와 같이 @ 다음의 device interface 로 알 수 있다.


OpenStack 에서 vlan Manager 를 사용하면 연결고리는 다음과 같다.

bridge -> vlan -> eth0

예) br101 -> vlan101 (vlan101@eth0) -> eth0

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

$ sudo vi /etc/udev/rules.d/70-persistent-net.rules


SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:e3:d9:dd", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eno*", NAME="eth0"

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:e3:d9:e7", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eno*", NAME="eth1"


auto lo

iface lo inet loopback


auto eth0

iface eth0 inet static

        address 192.168.75.129

        netmask 255.255.255.0

        gateway 192.168.75.2

        dns-nameservers 8.8.8.8 8.8.4.4


auto eth1

iface eth1 inet static

        address 192.168.230.129

        netmask 255.255.255.0


$ sudo reboot




=========== 이전 자료 =======================


1) 수정 /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT=”biosdevname=0 quiet splash”
GRUB_CMDLINE_LINUX=”biosdevname=0″
위 두 파라메터의 값에 biosdevname=0 을 추가 해 주십시요.
2) sudo update-grub
3) /etc/network/interface 의 NIC 설정 변경
4) reboot

이 방법으로 변경이 되지 않으시거나 kernel option 을 변경하고 싶지 않으시면 아래 방법으로 변경해 주시면 됩니다.

1) biosdevname package 삭제
sudo apt-get purge biosdevname
2) NIC 의 MAC 확인
ifconfig | grep HWaddr
xx:xx:xx:yy:yy:yy

3) /etc/udev/rules.d/70-persistent-net.rules 설정 변경
아래 라인을 추가 해 주시거나 해당 라인이 있으면 수정 해 주십시요.
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:yy:yy:yy", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

위 설정은 MAC xx:xx:xx:yy:yy:yy 을 가지는 NIC 에 대해 eth0 으로 장치명을 설정하는 예제 입니다.

3) /etc/network/interface 의 NIC 설정 변경
4) reboot

- /etc/udev/rules.d/ 에 biosdevname 관련 파일이 있으면 삭제 해 주십시요.


- From 심장훈 at Canonical -

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

1. 여행기간 : 2014년 4월 28일 10:20 하와이 도착 ~ 2014년 5월 4일 12:00 하와이 출발

2. 호텔 : Hyatt Regency Waikiki Beach Resort and Spa

              2424 Kalakaua Ave, Honolulu, HI, USA 96815-3289

              주차는 맞으편 Hyatt Ballroom 에 5층 이상부터 셀프 주차 가능, 1일 주차비 $30

              처음에 들어갈 때는 종이 티켓을 뽑고 들어가고 호텔 체크인 이후에는 룸키를 넣으면 저절로 나옴

              체크아웃할 때 룸키를 반드시 가져가야 함. 그래야 주차장에서 나올 수 있음

              호텔 수영장 데스크에서 비치타월 무료대여


* 호텔은 아주 좋은 곳으로 잡을 필요 없음. 다 거기서 거기임. 여행사나 기타 호텔 정보 볼필요 없음

* 기왕이면 와이키키 해변 근처로 잡고, 하야트 바로 뒷편에 싸고 괜찮은 호텔 많이 있더라는



[ 4월 28일 (월) ]

1. 하와이 공항 도착 10:20


2. Alamo 렌트카 10:20 ~ 12:00

    - 공항에서 Alamo 셔틀버스를 타고 Alamo 렌트카 장소로 이동

    - 주소 : 3055 N NIMITZ HWY HONOLULU HI 96819 US


3. 돌 파인애플 농장 (Dole Plantation)

    - 파인애플 아이스크림

    - 주소 : 64-1550 Kamehameha Hwy, Wahiawa, HI 96786


4. 라니아케아 해변 (Laniakea Beach)

    - 바다거북을 해변에서 볼 수 있음

    - 주소 : 61-636 Kamehameha Hwy, Haleiwa, HI 96712


5. 호텔 체크인

    - 15:00 이후 부터 가능


6. Costco & Walmart

    - 선물 사기

    - kona 커피(100%), 마카다미아, 초콜릿, 바디보드(Body Board), 우유, 시리얼



[ 4월 29일 (화) ]

1. 와이켈레 프리미엄 아울렛 (Waikele Premium Outlets)

    - 주소 : 94-790 Lumiaina Street Waipahu, HI 96797


2. 키킨 케이준 해물 식당 (Kickin Kajun)

    - 점심, 바닷가재, Combo #5 정도면 2명이 먹기 충분

    - 아래 주차장이 두대밖에 없고 거리 동전으로 유료 주차이므로 근처 Walmart 에 세우고 가도 됨

    - 주소 : 1518 Makaloa St, Honolulu, HI 96814


3. 와이키키 해변에서 놀기

    - 바디보딩

    - 와이키키 해변 내 Queen's Beach 혹은 Waikiki Wall 이 바디보딩하기에 좋은 파도가 침



[ 4월 30일 (수) ]

1. 미 바베큐 (Me's Bar-B-Que)

    - 갈비 full menu 로 시키면 $13, 둘이서 충분, 포장으로 쌀 것, 하나우마 베이에서 놀고나서 점심으로 먹음

    - 하얏트에서 50m 밖에 안됨

    - 주소 : 151 Uluniu Ave, Honolulu 96815


2. 하나우마 베이 (Hanauma Bay)

    - 스노우쿨링

    - 화요일은 휴무 06:00 ~ 19:00,  오전 9시 30분까지 도착하면 충분

    - 주소 : Hawaii Kai Honolulu, HI 96825

                언덕 꼭대기까지 올라가면 우측에 주차장으로 들어가는 길이 있음


3. 라니카이 해변 (Lanikai Beach)

    - 세계 10 해변 중 8번째 해변으로 뽑힘, 사람도 별로 없고 정말 좋음

    - 주차는 아래 주소에서 두번째 우측 골목으로 들어가서 주차 (잘못하면 주차위반 딱기 끊을 수 있음)

    - 주소 : Mokumanu Drive, Kailua, HI 96734



[ 5월 1일 (목) ]

1. 마카푸우 등대 (Makauu Point)

    - 혹등고래를 볼 수 있는 명소, 걸어서 등대까지 편도 1시간 정도 됨

    - 혹등고래는 하와이에서 12월 ~ 5월까지 볼 수 있음

    - 주소 : 10035 Kalanianaole Hwy, Waimanalo, HI 96796


2. 쿠알로아 목장 (Kualoa Ranch)

    - 주라기 공원 촬영장, Ocean Voyaging Tour, Jungle Expedition Tour

    - 주소 : 49-560 Kamehameha Hwy, Kaneohe, HI 96730



[ 5월 2일 (금) ]

1. Romy's kahuku

    - 점심 식사

    - 새우 양식장에서 싱싱한 새우 (주문은 No.5 로 하고 spicy 소스로 주문, 파일애플은 먹지 말 것)

    - 주소 : 56781 Kamehameha Hwy Kahuku, HI 96731


2. 와이메아 베이 비치 공원 (Waimea Bay Beach Park)

    - 노스쇼어 쪽의 유명하고 깨끗한 해변

    - 아래 주소에 주차장이 꽉 차면 나와서 좌측으로 운전하여 2분정도 가면 우측에 교회 주차장에 주차 가능

    - 교회 주차장도 없으면 조금 더 30초 정도 더 가면 우측에 작은비치 주차장이 있음

    - 주소 : 61-031 Kamehameha Hwy, Haleiwa, HI 96712


3. 화이키키 힐튼 하와이안 빌리지 호텔

    - 불꽃놀이

    - 금요일 저녁 19:30 ~ 20:00


4. 카하라 리조트 (Kahala Resort)

    - 칵테일 2대째

    - Koko Head, Loyal Pine

    - 주소 : 5000 Kahala Ave, Honolulu, HI 96816



[ 5월 3일 (토) ]

1. KCC Farmers' market (Kapiolani Community College)

    - 농산물 직거래로 괜찮은 상품들을 살 수 있음

    - 과일 SOQ 인증은 하와이 농산품임을 인증

    - 토요일 오전 07:00 ~ 11:00

    - 주소 : 4303 Diamond Head Road, Honolulu 96816


2. Diamond Head State Monument

    - 하와이 전체를 둘러볼 수 있음

    - 주차장까지 가면 차량 $5만 or 주차장을 걸어서 올라가면 1인당 $1 입장료, 그렇담 당근 차량으로..

    - 주소 : 4303 Diamond Head Road, Honolulu 96816


[ 5월 4일 (일) ]

1. 호텔 체크 아웃 (09:00)

2. Alamo 렌트카 (09:30)

3. 공항 티켓팅 (10:00)

4. 비행기 이륙 12:00








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

%% 폴더 삭제하기 - rmdir.bat %%

@IF '%1'=='' GOTO USAGE

@IF '%2'=='' GOTO USAGE

@FOR /R %1 %%1 IN (%2) DO RMDIR /S /Q "%%1"

@PAUSE 

GOTO END


:USAGE

@ECHO rmrcv [시작폴더위치] [폴더명]


:END



%% 파일 삭제하기 - delfile.bat %%


@IF '%1'=='' GOTO USAGE

@IF '%2'=='' GOTO USAGE

@FOR /R %1 %%1 IN (%2) DO DEL /S /Q "%%1"

@PAUSE 

GOTO END


:USAGE

@ECHO delrcv[시작폴더위치] [파일명]


:END

반응형
Posted by seungkyua@gmail.com
,

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
,