반응형

이 글에서는 리눅스 커맨드 라인에서 특정 디렉토리의 용량을 확인하고, 이를 활용하여 특정 용량 이상의 디렉토리를 검색하는 방법을 설명한다.



특정 디렉토리의 용량 확인하기


리눅스에서 특정 디렉토리의 용량을 확인하려면 du 명령어를 쓰면 된다.


$ du -s [디렉토리_이름]


참고로 -s 옵션은 디렉토리의 하위 디렉토리에 있는 파일들의 용량을 합산하여(summarize) 보여주는 옵션이다. "-s" 옵션을 빼면 디렉토리 내부의 모든 하위 디렉토리의 용량을 보여준 후, 마지막으로 검사하는 디렉토리의 용량을 보여준다.


아래 그림은 du -s를 이용하여 "mc_sc" 디렉토리의 용량을 얻어온 결과이다.


다음 그림은 du만 가지고 "mc_sc" 디렉토리를 검사하였다. 그 결과, 하위 디렉토리를 모두 검사하여 용량을 표시한 후에 마지막으로 mc_sc의 용량을 계산하였다.





특정 용량 이상의 디렉토리 찾기


앞서 살펴본 du -s를 응용하여 wildcard 문자(*)를 쓰면, 현재 위치에 있는 모든 디렉토리의 용량을 찾을 수 있다. 앞서 예제로 확인한 위치에서 du -s * 명령을 친 결과는 아래 그림과 같다. ILQR_exp_data 디렉토리 바로 하위에 있는 디렉토리들에 대해서 각각 합산된 용량을 보여주는 것을 알 수 있다.



그러면 이 중에서 100MB 이상의 용량을 가지는 디렉토리만 보려면 어떻게 할까?

파이프라인(|)으로 awk 명령을 추가해서 출력 결과를 필터링함으로써 이 목적을 달성할 수 있다. 출력 결과의 첫번째 열이 용량을 보여주는 숫자로 되어 있으므로, 첫번째 열의 변수 값($1)이 특정 숫자보다 크도록 조건을 걸면 된다.


아래 명령은 현재 위치에서 100MB 이상의 용량을 갖는 디렉토리를 보여준다. 참고로 뒤의 숫자는 킬로바이트(KB, kilobyte) 단위이다.


$ du -s * | awk '$1 > 100000'


위 명령을 실행한 결과는 다음 그림과 같다.



반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu Desktop 12.04.3 LTS (64bit)


가끔 우분투 소프트웨어 센터(Ubuntu Software Center)를 거치지 않고 직접 .deb 파일을 가지고 설치할 때가 있다. 설치하고 나서 소프트웨어 센터에서 검색되는 경우에는 GUI를 통해서 쉽게 다시 삭제할 수 있지만 가끔 그렇지 않을 때(소프트웨어 센터에서 설치된 목록에 보이지 않을 때)도 있다.

이 경우 설치할 때와 마찬가지로 dpkg 명령으로 쉽게 제거가 가능하다.




(1) 패키지 설치


먼저 dpkg를 이용해서 deb 파일로부터 패키지를 설치하는 방법은 다음과 같다.

(-i 옵션은 install하겠다는 의미이다.)


$ sudo dpkg -i DEB_파일_이름



또는

$ sudo dpkg --install 패키지_이름


예를 들어, 오라클(Oracle)에서 제공하는 jdk를 직접 설치할 경우 아래와 같이 할 수 있다.


$ sudo dpkg -i jdk_1.7.045-1_amd64.deb




(2) 설치된 패키지 검색


그리고 dpkg를 이용해서 설치된 패키지를 검색하는 방법은 -l 옵션(list)으로 아래와 같이 가능하다.


$ dpkg -l 패키지_이름


또는

$ sudo dpkg --list 패키지_이름


-l 옵션만 쓰고 뒤에 아무 이름도 명시하지 않으면 설치된 모든 패키지가 화면에 출력된다. 만약 정확한 이름이 기억나지 않아서 패키지 이름으로 검색되지 않는 경우에는 아래와 같이 grep 명령을 추가해서 키워드로 검색할 수 있다. 참고로 -l과 grep 사이에 쓴 막대기는 역슬래시(\) 문자를 쉬프트(Shift) 키와 함께 누른 것이다. (리눅스 파이프라인에 쓰는 문자)


$ dpkg -l | grep "패키지_이름의_일부"




(3) 설치된 패키지 제거(삭제)


검색해서 알아낸 패키지 이름을 가지고 dpkg를 이용해서 아래와 같이 패키지를 삭제할 수 있다.


$ sudo dpkg --remove 패키지_이름


또는

$ sudo dpkg -r 패키지_이름


간혹 패키지가 완전히 삭제되지 않고 설정 파일이 남아서 dpkg -l로 계속 검색될 때가 있다. 이 때는 -r 대신 --purge 옵션으로 깨끗하게 삭제 가능하다.


$ sudo dpkg --purge 패키지_이름


또는
$ sudo dpkg -P 패키지_이름


purge 옵션을 쓰더라도 사용자가 임의로 변경하거나 추가한 파일은 삭제되지 않으므로 그 파일들은 사용자가 직접 삭제해야 한다.



반응형
블로그 이미지

Bryan_

,
반응형

OS: Linux 11.04 (32bit)

확인해본 USB 무선랜카드: IPTIME (Ralink) RT2501/RT2573 Wireless Adapter, IPTIME N150UA (Ralink RT3070)


노트북에 USB 무선랜카드를 하나씩 추가해서, 멀티 라디오 라우팅을 테스트하다 보면 가끔 USB 무선랜카드로부터 아무 패킷도 받지 못하는 현상이 발생한다.

이 때 ifconfig를 통해서는 무선랜 인터페이스가 정상적으로 인식되며, 고정IP도 정상적으로 세팅되어 있다. 하지만 프로그램 상에서 테스트해 보면 아무 패킷도 받지 못할 뿐더러 아무 패킷도 보내지 못한다.


확실치는 않지만, 그 때마다 iwconfig를 통해서 보면 애드혹 네트워크에서 ESSID 영역이 "Not associated"로 되어 있었던 것 같다. 단순히 노트북을재부팅하는 것만으로는 여전히 위와 같이 먹통인 상태인 것을 확인했다.


현재로써는 두 가지 해결방법이 가장 무식하지만 가장 확실하다.

1) USB 무선랜카드를 분리하고 잠시 있다가 다시 연결 (USB plug out + plug in)

2) 노트북을 재부팅하지 말고, 아예 전원을 완전히 껐다가 다시 부팅 (shutdown + turn on)


전공이 전자과도 아니고 장비에 익숙하지 않아서 원인을 알 수 없지만,

굳이 추측하자면 컴퓨터에 연결된 채 오랫동안 많은 명령(사실 많은 트래픽도 아니다. 나는 단지 라우팅 프로토콜을 구현해서 plain text 형태의 라우팅 메세지, ping 메세지 정도만 반복적으로 주고받았으니까.)을 보내다 보면 여전히 낮은 확률이지만 먹통 현상이 발생한다.




반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu 계열 (11 이상에서 테스트했으나 이하 버전도 아마 가능할 듯)


컴퓨터에 USB 무선랜카드를 여러 개를 번갈아 가면서 쓰다 보면, wlan0, wlan1, wlan2 등 여러 개의 무선 네트워크 인터페이스가 존재하는 것으로 인식될 뿐만 아니라 인터페이스 번호도 뒤죽박죽이 되는 경우가 있다.

또한 네트워크 관련 프로그래밍을 하다 보면 의도적으로 인터페이스 이름을 지정해야 하는 경우도 생기는데, 인터페이스 번호가 달라서 실행하지 못하는 문제가 발생하기도 한다.


이 때는 /etc/udev/rules.d/70-persistent-net.rules 파일을 열어서 인터페이스 번호를 수정할 수 있다.


# This file maintains persistent names for network interfaces.

# See udev(7) for syntax.

#

# Entries are automatically added by the 75-persistent-net-generator.rules

# file; however you are also free to add your own entries.


# PCI device 0x8086:0x10f5 (e1000e)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1f:16:08:98:a5", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"


# PCI device 0x8086:0x4236 (iwlagn)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:16:ea:b1:9d:a4", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"


# USB device 0x148f:0x2573 (usb)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:08:9f:fd:55:4b", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan1"


위에서 빨간색 표시된 영역을 원하는 인터페이스 이름으로 수정할 수 있다. 

만약 현재 쓰지 않는 네트워크 인터페이스일 경우에는 #을 이용해서 주석처리할 수도 있다.

또는 아예 운영체제가 자동으로 네트워크 인터페이스 이름을 처음부터 새로 잡아주길 바란다면 위 파일을 삭제하고 재부팅하는 방법도 있다.




반응형
블로그 이미지

Bryan_

,
반응형

(Software)

OS: Ubuntu 11.04 desktop (32bit)

Kernel: linux-2.6.38.8-generic

라우팅 프로토콜: aodv-uu-0.9.6 (http://sourceforge.net/projects/aodvuu/files/AODV-UU/0.9.6/)


(Hardware)

IBM X40, IBM X60s, Lenovo X200 (3대)



1. Ad-hoc 네트워크 설정

각 노트북에서 /etc/network/interfaces 파일에 아래와 같이 설정을 추가한다. (무선랜 인터페이스가 wlan0일 경우)

아래 설정은 하나의 예시이며, address, wireless-channel, wireless-essid는 원하는 대로 변경할 수 있다. 대신 address는 모든 기기가 같은 subnet 안에 있도록 맞출 필요가 있다.

(IBM X40)

auto wlan0

iface wlan0 inet static

address 192.168.0.3

netmask 255.255.255.0

wireless-mode ad-hoc

wireless-channel 1

wireless-essid testadhoc


(IBM X200)

auto wlan0

iface wlan0 inet static

address 192.168.0.4

netmask 255.255.255.0

wireless-mode ad-hoc

wireless-channel 1

wireless-essid testadhoc


(Lenovo X60s)

auto wlan0

iface wlan0 inet static

address 192.168.0.5

netmask 255.255.255.0

wireless-mode ad-hoc

wireless-channel 1

wireless-essid testadhoc


interfaces 파일을 저장하고 하고 나서 네트워크를 재시작한다. 사실 가장 확실한 방법은 재부팅이다. 
$ sudo /etc/init.d/networking restart

만약 Ubuntu 11.04 desktop을 쓰는 경우 우측 상단에 있는 네트워크 아이콘은 무시하는 것이 좋다. Interfaces 파일을 직접 고칠 경우 GUI 상에서 "어느 네트워크에 연결되었다"는 메세지가 보이지 않고 부채꼴 모양의 아이콘 모양도 연결된 모양으로 바뀌지 않는다. 하지만 애드혹 네트워크에 이미 참여해 있을 가능성이 높다.

어떤 경우에는 재부팅하고 나서 ifconfig 명령을 쳐봐도 무선랜 인터페이스가 보이지 않을 때도 있다. 그럴 때는 networking restart 명령을 입력한다. 우선 모두 서로 신호가 닿는 가까운 거리에 두고(one hop) 서로 ping을 보내서 응답이 오는지 테스트한다.
서로 인식되는 경우 멀티홉이 가능하도록 2대를 가능한 한 거리를 멀리 두거나 복도, 코너 등 실내 구조를 이용한다. 그래도 여전히 3대가 서로 신호가 닿을 경우에는 iwconfig를 이용해서 아래와 같이 신호 세기를 조절한다.
$ sudo iwconfig wlan0 txpower 10.0

보통 무선랜 어댑터의 신호세기가 15dBm~20dBm 정도 되는데, 조금씩 줄여 가면서 테스트할 필요가 있다. 주변에 있는 다른 신호나 벽의 위치, 공간의 폐쇄 여부에 따라서 성능이 많이 달라지기 때문에 정답이 없는 것 같다.


2. AODV 소스코드 빌드 및 실행

이어서 다운로드 받은 aodv-uu-0.9.6.tar.gz 파일을 적당한 위치에 압축을 푼다.

aodv-uu 디렉토리에 가서, 빌드를 새로 해주고 나면 aodv 데몬을 바로 실행할 수 있다.

$ make clean; make

$ make install

$ sudo ./aodvd -l -r 5

(-l 옵션은 /var/log/aodvd.log 파일에 로그를 남기는 것이고,

-r 옵션은 라우팅 테이블을 매 몇 초마다 파일에 기록할지 정하는 것이다.)



(여기부터는 내가 했던 삽질들에 대한 기록이다. ㅠㅠ)

*사실 좀더 최신 버전의 우분투(12.04 또는 12.10)를 쓰고자 했으나, aodv-uu 소스코드를 에러 없이 빌드하기 위한 조건이 커널 버전 2.6이기 때문에 커널 3.0 이상을 쓰는 최근 버전은 쓸 수 없었다.


*본 글에서 언급한 구형 노트북들보다 훨씬 성능 좋은 최신 노트북을 네트워크에 참여시키고자 했으나, (삼성 시리즈9, NT900X3C) 우분투 11.04 이하 버전을 설치하자 내장 무선랜카드가 인식되지 않았다. 그래서 어렵지만 우분투 12.04를 먼저 설치하고, (기본으로 커널 3.2만 깔린다) 커널 2.6을 빌드해서 부팅했더니 무선랜카드를 또다시 인식하지 못했다. 게다가 i5 CPU 중에서 2개의 코어가 지속적으로 80~90%의 자원을 점유하며 발열이 심해지는 현상이 발생하여 포기했다. ㅜㅜ


*게다가 우분투 12.04에서조차 시리즈9 노트북의 내장 무선랜카드는 오작동을 보였다. 그냥 내장 무선랜을 포기하고 시리즈9에 우분투 11.04를 설치하고 나서, 잘 인식되는 USB 무선랜카드를 새로 구입하기로 했다.



반응형
블로그 이미지

Bryan_

,