'Linux'에 해당되는 글 15건

  1. 2011.01.25 [Shell Script] Log 디렉토리 삭제
  2. 2010.03.23 ubuntu 9.10 sound... Dummy output problem.
  3. 2010.03.03 커널 컴파일(kernel compile - make install) 에러
  4. 2010.03.03 make menuconfig 에러
  5. 2010.01.06 우분투 / 데비안 계열 고정 ip 설정 4
  6. 2009.12.12 diff and patch in linux
  7. 2009.11.30 Debian lenny - FlashPlayer 설치
  8. 2009.08.31 vi 문자열 치환 2
  9. 2009.08.28 LXR(Linux Cross-Reference)
  10. 2009.08.25 Ubuntu 한국 업데이트(kr.archive.ubuntu.com) 미러 접속문제.. 1
2011. 1. 25. 13:57

[Shell Script] Log 디렉토리 삭제



쌓여만 가는 로그때문에 하드 용량의 압박을 받을 때가 종종 생긴다.
어차피 로그는 어떠한 이벤트(사고)가 발생했을 때 전 후로 참조할 부분만 있으면 되지..
몇달이고 몇년이고 로그를 보물단지처럼 간직하고 있을 필요는 없을듯..

1달 정도의 로그만 유지하기 위한 간단한 스크립트다

#!/bin/sh
LOG_DIR=~/test/src/log
DELETE_LOG=`date +%Y%m%d --date '1 month ago'`

if [ -d $LOG_DIR/$DELETE_LOG ]; then
    rm -rf $LOG_DIR/$DELETE_LOG
else
    echo "There's no logs..."
fi

오늘 날짜를 기준으로 해서 1달 전의 로그 디렉토리를 지운다.

'logrotate' 라는 녀석을 살펴보았는데.. 이 녀석은 file 로 된 로그에 한해서 사용되는 모양이다.
자세한 것은 더 살펴봐야 하겠지만..

2010. 3. 23. 01:10

ubuntu 9.10 sound... Dummy output problem.



우분투 9.10 을 설치하곤 여태껏 한번도 소리가 안들린다고 생각한 적이 없었다...
오늘 유투브에서 동영상을 보려 헤드폰을 사용하기 전까지는.. -_-;

사운드 카드 아이콘에 마우스를 가져가니 "Dummy output"이란다...

일단 해결 방법을 찾았고, 지금은 사운드 자~알 나온다 ^^;

해결방법..

$ sudo update-grub

$ sudo apt-get remove --purge alsa-base
$ sudo apt-get remove --purge pulseaudio
$ sudo apt-get install alsa-base
$ sudo apt-get install pulseaudio
$ sudo alsa force-reload

$ sudo reboot

참고 웹 페이지..
http://ubuntuforums.org/showthread.php?p=8267482


2010. 3. 3. 01:02

커널 컴파일(kernel compile - make install) 에러



2.6.4 커널을 가지고 "make install" 명령을 입력하면 쭈욱 쭈욱 컴파일을 해나간다.
컴파일을 시작한지 얼마 되지도 않았는데..
아래와 같은 에러 메시지가 출력됐다... -_-;
# make install
...
  CC      arch/i386/kernel/process.o
{standard input}: Assembler messages:
{standard input}:104: Error: suffix or operands invalid for `mov'
{standard input}:105: Error: suffix or operands invalid for `mov'
{standard input}:765: Error: suffix or operands invalid for `mov'
{standard input}:766: Error: suffix or operands invalid for `mov'
{standard input}:982: Error: suffix or operands invalid for `mov'
{standard input}:983: Error: suffix or operands invalid for `mov'
{standard input}:1072: Error: suffix or operands invalid for `mov'
{standard input}:1073: Error: suffix or operands invalid for `mov'
{standard input}:1151: Error: suffix or operands invalid for `mov'
{standard input}:1163: Error: suffix or operands invalid for `mov'
make[1]: *** [arch/i386/kernel/process.o] 오류 1
make: *** [arch/i386/kernel] 오류 2

이 에러에 대한 해결책은 아래 링크를 참조하면 될 듯 하다.
http://www.linuxquestions.org/questions/linux-from-scratch-13/problem-while-make-kernel-343910/
# wget http://www.kernel.org/pub/linux/devel/binutils/linux-2.6-seg-5.patch
# patch -Np1 -i linux-2.6-seg-5.patch

패치 후 "make install"을 하면 정상적인 컴파일이 이루어지고, "arch/i386/boot/bzImage"를 얻을 수 있다.

구 버전의 커널에서 일어나는 현상인듯 한데.. 정확한건 잘 모른다.
kldp.org(http://kldp.org/node/74510) 에서는, 2.6.18 버전 커널의 경우 커널 컴파일이 에러 없이 동작하는데.. 2.6.9 버전 커널의 경우에는 동일한 에러가 발생한다고 한다.
답변은.. "구버전커널이시군요. 신버전커널 받아서 해보시죠" 이다. -_-;;



'Linux > Kernel' 카테고리의 다른 글

make menuconfig 에러  (0) 2010.03.03
LXR(Linux Cross-Reference)  (0) 2009.08.28
2010. 3. 3. 00:12

make menuconfig 에러



2.6.4 버전의 커널에서 "make menuconfig" 하는 도중 아래와 같은 에러 발생.. -_-;
...
HOSTCC  scripts/kconfig/mconf.o
scripts/kconfig/mconf.c:91: error: static declaration of ‘current_menu’ follows non-static declaration
scripts/kconfig/lkc.h:63: error: previous declaration of ‘current_menu’ was here
make[1]: *** [scripts/kconfig/mconf.o] 오류 1
make: *** [menuconfig] 오류 2

4.x 버전대의 gcc로 컴파일을 하면 에러가 발생하는 모양이다.
해결책은 3.x 버전의 gcc로 갈아탄 후 컴파일을 하는 것이다.
본인의 경우 3.4.6 버전의 gcc를 사용해 make menuconfig를 실행한 결과 위와 같은 에러메시지는 보이지 않고 정상적으로 동작을 했다.

다른 방법으로는 "scripts/kconfig/mconf.c" 파일의 91번째 라인에서 "static" 키워드를 제거하면 된다.
...
//static struct menu *current_menu;
struct menu *current_menu;
...


'Linux > Kernel' 카테고리의 다른 글

커널 컴파일(kernel compile - make install) 에러  (0) 2010.03.03
LXR(Linux Cross-Reference)  (0) 2009.08.28
2010. 1. 6. 14:00

우분투 / 데비안 계열 고정 ip 설정



우분투나 데비안에서 고정 ip를 설정하는 방법이다.
데비안의 경우 설치 시 ip를 설정할 수 있지만, 우분투의 경우는 DHCP로 잡히기 때문에.. 필요에 따라 다시 설정을 해 주어야 한다.

먼저 네트워크 인터페이스를 내린다(중지 시킨다).
$ sudo ifdown eth0

네트워크 인터페이스 설정 파일을 자신의 상황에 맞게 수정한다.
$sudo vi /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0
network 192.168.0.0
broadcase 192.168.0.255
gateway 192.168.0.1
dns-nameservers 168.126.63.1 168.126.63.2

네임 서버를 수정한다.
$ sudo vi /etc/resolv.conf
nameserver 168.126.63.1
nameserver 168.126.63.2

네트워크 인터페이스를 올린다(다시 동작 시킨다).
$ sudo ifup eth0


ip 를 자동으로 할당받고 싶다면, '/etc/network/interfaces' 에서 iface eth0 inet static 이하의 부분을 iface eth0 inet dhcp 로 수정해 주면 된다.


2009. 12. 12. 22:50

diff and patch in linux



'diff'는 두 파일간의 차이를 보여주는 프로그램이다.
원본 파일이 있고, 그 파일을 수정한 다른 파일이 있다면 그 파일간의 바뀐점이 무엇인지 알고 싶을 때 사용할 수 있다. 혹은 여러사람이 작업을 할 때 기존의 파일을 수정하였을 때 어떤 부분이 바뀌었는지도 확인 할 수 있다.

아래와 같이 diff 라면 명령어를 사용하여 확인 할 수 있다.
$ diff a파일 b파일

변화가 있는 부분을 파일로 저장하기 위해선..
$ diff a파일 b파일 > 파일.diff
혹은
$ diff -u a파일 b파일 > 파일.diff
을 사용할 수 있다.

diff 사용 예...
$ vi hello.c
#include <stdio.h>

void main()
{
    printf(hello);
}

$ vi hello2.c
#include <stdio.h>

int main(int argc, char **argv)
{
    printf("hello \n");
    return 0;
}

$ diff -u hello.c hello2.c > hello.diff
$ cat hello.diff
--- hello.c 2009-12-12 21:46:38.000000000 +0900
+++ hello2.c    2009-12-12 21:48:32.000000000 +0900
@@ -1,6 +1,7 @@
#include <stdio.h>

-void main()
+int main(int argc, char **argv)
{
-    printf(hello);
+    printf("hello \n");
+    return 0;
}

디렉토리를 비교하려면,
$ diff -urN A디렉토리 B디렉토리


'patch' 는 diff 명령을 통해 만들어진 파일을 적용하는 명령이다.
위에서 작성한 hello.c 파일과 hello2.c 파일의 바뀐점이 diff 명령을 통해 hello.diff 파일에 적용되고, hello.diff 파일을 사용하여 hello.c파일을 hello2.c파일과 동일하게 패치 한다.
$ patch -p0 < hello.diff
위와 같이 패치를 하게 되면, hello.c 파일이 hello2.c 와 동일한 파일로 패치되어 있는 것을 확인할 수 있다.

patch 에서 'p0'라는 옵션이 있는데.. 이 옵션은 diff를 할 때 파일이 놓인 경로의 깊이를 나타내는 것으로 볼 수 있다. 위의 diff 명령은 동일한 디렉토리 내에서 파일을 diff 한 것이지만, 일반적으로 프로젝트를 하게 되면 동일한 디렉토리가 아닌 project1/ project2/ 와 같이 다른 디렉토리도 작업을 하게 될 것이다.
$ diff -urN project1/ project2/ > project.diff
$ cat project.diff
diff -urN project1/hello.c project2/hello.c
--- project1/hello.c
+++ project2/hello.c
...

$ cp project.diff project1/
$ cd project1
$ patch -p1 < project.diff

위처럼 경로명이 몇단계로 이루어지느냐에 따라 p0, p1, .. 을 결정 할 수 있게 된다.
경로명을  몇꺼풀 벗길 것인가.. 라는 얘기이다.
위의 예처럼 -p0 옵션을 사용하면, 한 꺼풀도 안벗기고 패치한다. 동일한 디렉토리위 내용을 패치한다고 할 수 있다.  위의 예와 같이 하면 -p1 옵션을 사용해서 패치하게 된다.


2009. 11. 30. 23:36

Debian lenny - FlashPlayer 설치



요즘 우분투를 밀고 데비안(Debian)을 사용하는데, 웹브라우져(아이스위즐)에서 플래시 실행이 안된다. -_-;
구글링을 한 결과 Adobe Flash Player를 설치하는 방법을 찾아서 설치해 보았다.

소스리스트 추가
# vi /etc/apt/sources.list
deb http://www.backports.org/debian lenny-backports main contrib non-free

소스리스트에 추가 후 다음을 실행
# wget -O - http://backports.org/debian/archive.key | apt-key add -
# apt-get update
# apt-get -t lenny-backports install flashplugin-nonfree


참고 : http://www.shimminkyu.com/tc/914

'Linux' 카테고리의 다른 글

Linux에서 사용자 관리 명령어 사용시 변경되는 파일  (1) 2008.10.31
Linux 사용자 관리  (0) 2008.10.29
Ubuntu Server 네트워크 설정  (0) 2007.10.17
2009. 8. 31. 10:07

vi 문자열 치환



'vi 에서 문자열을 편하게 바꾸고 싶다. '

그간 바꾸고자 원하는 단어나 문자열을 지우고 바꾸는 단순 무식한 방법을 사용했다. 가장 간단하고 쉬우니깐!!
하지만, 여러개의 동일한 단어나 문자열을 다른 동일한 단어나 문자열로 바꾼다고 했을 때.. 그간 사용했던 방법은 정말 왕 무식한 방법이다.

사용법은 의외로 간단하다.
:%s/기존 문자열/바꿀 문자열/g

예를 들어 babo라는 문자열을 baba로 바꾸고 싶다면..
:%s/babo/baba/g
라고 하게 되면, vi 로 열고 있는 문서의 모든  babo라는 문자열을 baba로 바꾸게 된다.

아래는 문자열을 치환하고자하는 방법에 따라 몇가지 종류를 나열한 것이다.
필요할 때 참고하면 될듯..
:s/기존 문자열/바꿀 문자열/             - 커서가 있는 행에서 처음 나오는 기존 문자열을 바꿀 문자열로 치환
:s/기존 문자열/바꿀 문자열/g           - 커서가 있는 행에 나오는 모든 기존 문자열을 바꿀 문자열로 치환
:%s/기존 문자열/바꿀 문자열/g        - 전체 내용에서 기존 문자열을 바꿀 문자열로 치환
:%s/기존 문자열/바꿀 문자열/gc      - 전체 내용에서 기존 문자열을 바꿀 문자열로 치환, 치환시 확인
:1,20s/기존 문자열/바꿀 문자열        - 1~20 행에서 처음 나오는 기존 문자열을 바꿀 문자열로 치환
:1,20s/기존 문자열/바꿀 문자열/g     - 1~20 행에 나오는 모든 기존 문자열을 바꿀 문자열로 치환
:-2, +4s/기존 문자열/바꿀 문자열/    - 커서 위 2, 아래 4행 중 처음 나오는 기존 문자열을 바꿀 문자열로 치환
:-2, +4s/기존 문자열/바꿀 문자열/g  - 커서 위 2, 아래 4행에 나오는 모든 기존 문자열을 바꿀 문자열로 치환

더 많은 내용은 'KLDP의 vi, vim 활용에 관한 문서'를 참조하면 될 듯 하다.

'Linux > Tip' 카테고리의 다른 글

우분투 / 데비안 계열 고정 ip 설정  (4) 2010.01.06
diff and patch in linux  (0) 2009.12.12
Ubuntu 한국 업데이트(kr.archive.ubuntu.com) 미러 접속문제..  (1) 2009.08.25
예쁜 쉘 프롬프트  (1) 2009.03.18
리눅스 IP 설정  (0) 2008.04.24
2009. 8. 28. 14:29

LXR(Linux Cross-Reference)



'LXR' 이라고 리눅스 커널 소스를 볼 때 아주 유용한 사이트가 있다.

리눅스 커널 버전별로 정리가 되어있고, 각 함수라든지, 변수 등이 링크되어있어 편하게 소스를 분석할 수 있다.
사실 편하긴 하지만 소스 분석하는것이 쉬운것은 절대 아닌듯 하다. -_-;;

온라인에서 뿐만 아니라 'LXR' 이라는 툴을 리눅스 기계에 설치해서 커널 소스 이외에도 다른 프로젝트들을 lxr 사이트처럼 문서화 해서 사용할 수 있다고 한다.
왜 나만 모르는 듯한 기분이 드는건지.. -_-;

오픈소스쪽에 가면 정말이지 생각도 못한 툴이나 프로그램들이 넘쳐나는 듯 하다.
무식이 죄라는 말.. 한번 더 공감!!

'Linux > Kernel' 카테고리의 다른 글

커널 컴파일(kernel compile - make install) 에러  (0) 2010.03.03
make menuconfig 에러  (0) 2010.03.03
2009. 8. 25. 10:22

Ubuntu 한국 업데이트(kr.archive.ubuntu.com) 미러 접속문제..



"apt-get" 로 우분투 업데이트를 할때면 "한국 업데이트 미러(kr.archive.ubuntu.com)"에 정상적으로 접속하지 못하는 경우가 종종 발생하곤 한다.
뭐.. 될 때도 있고, 안될 때도 있고..

이참에 쫌 귀찮은걸 감안하고 업데이트 미러를 바꿔버렸다.
우분투 소스리스트(/etc/apt/source.list)를 열어 수정을 해준다.
http://kr.archive.ubuntu.com 이라고 된 부분을  http://ftp.daum.net 로만 바꾸어주면 된다.

$ sudo vi /etc/apt/source.list

수정 후 저장하고 apt-get update를 해보면 정상적으로 동작하는 것을 확인할 수 있다.

다음이니깐 서버가 다운되는 일은 없겠지?? ^^;


'Linux > Tip' 카테고리의 다른 글

우분투 / 데비안 계열 고정 ip 설정  (4) 2010.01.06
diff and patch in linux  (0) 2009.12.12
vi 문자열 치환  (2) 2009.08.31
예쁜 쉘 프롬프트  (1) 2009.03.18
리눅스 IP 설정  (0) 2008.04.24