초보자를 위한
리눅스 팁 시리즈

    이성주 / 고려대학교 컴퓨터학과
    현재 컴퓨터학과 시스템연구회 회원
    linuxlee@hitel.net
    nikea@nownuri.net

     

 

1. bash prompt에서 칼라 사용

    보통의 방법은 escape sequence를 사용하는 것이다. 그러나 다음의 shell 함수와 PS1 의 변경을 사용할 수 있다.
     

    colourize-prompt () {
       if [ $UID = 0 ]
       then
          echo -n ' ;31'
       fi
    }
    PS1='\[\033[0$(colourize-prompt)m\]\w\$'

    다음도 비슷한 방법이다.

    PS1="\[\033[1;31;40m\][BgRH **\u **]:\w#\[\033[0;37;40m\]"
    export PS1


    만약 터미널 별로 다른 색의 프롬프트를 사용하려면 다음과 같이 한다.
     

    case 'tty' in
          /dev/tty1 )
                PS1="\[\033[1;37;40m\][RH4-1\u]:\w\$\[\033[0;37;40m\]" ;;
          /dev/tty2 )
                PS1="\[\033[1;33;40m\][RH4-2\u]:\w\$\[\033[0;37;40m\]" ;;
          /dev/tty3 )
                PS1="\[\033[1;32;40m\][RH4-3\u]:\w\$\[\033[0;37;40m\]" ;;
          /dev/tty4 )
                PS1="\[\033[1;36;40m\][RH4-4\u]:\w\$\[\033[0;37;40m\]" ;;
          /dev/tty5 )
                PS1="\[\033[1;34;40m\][RH4-5\u]:\w\$\[\033[0;37;40m\]" ;;
          /dev/tty6 )
                PS1="\[\033[1;35;40m\][RH4-6\u]:\w\$\[\033[0;37;40m\]" ;;
          * )
                PS1="\[\033[1;37;40m\][RH4-1\u]:\w\$\[\033[0;37;40m\]" ;; 
          esac
          export PS1


     

2. 내장 스피커의 소음 방지

    생각보다 내장 스피커의 소음이 시끄럽다고 느낀다면 다음의 방법을 사용하여 소리가 나지 않게 할 수 있다.

    X 윈도우 환경이라면 ~/.xsession 이나 ~/.xinitrc에서 다음과 같은 명령을 실행시켜 준다.

      xset b off

    bash 라면 /etc/inputrc 나 또는 $INPUTRC가 가지고 있는 장소에 다음과 같이 입력한다.

      set bell-style none

    tcsh 사용자라면 ~/.tcshrc 에 다음과 같이 입력한다.

      set nobeep

    한텀을 사용하는 경우라면 visual bell 기능을 사용할 수 있다.  

    다음 한텀 리소스 파일에서 visual bell : false를 true로 바꿔주면 된다.

      /usr/X11R6/lib/X11/app-defaults/Hanterm

    그렇지 않으면 한텀 화면에서 Ctrl + 마우스 가운데 버튼을 눌러서 나오는 메뉴 중에서 Enable Visual bell을 선택하여 사용할 수도 있다.

    만약에 사운드 카드가 있다면 커널을 패치하여 사운드 카드에서 소리를 조절함으로써 내장 스피커를 사용하지 않도록 할 수 있다. 먼저 하드웨어적인 설치를 한다. 즉 스피커의 선을 사운드 카드에 연결하는데 보통의 사운드 카드라면 이러한 일을 할 수 있도록 되어 있다. 그리고 다음의 장소에서 oplbeep를 가져온다.

      ftp://sunsite.unc.edu/pub/Linux/apps/sound

    oplbeep 는 표준 beeper를 Yamaha FM synthesizer 로 보내는 역할을 한다. 이것을 사용하기 위해서는 oplbeep.kernel-patch를 하고 커널을 재 컴파일한다. 그리고 인스톨 한 다음에 부팅을 시킨다. 그런 다음 Beep.o 라는 모듈을 만든다. 그리고 insmod 명령으로 인스톨을 시킨다.

      insmod Beep.o OPL3_PORT=FM-synthesizer-port-address

    synth의 주소는 부팅 메시지로부터 확인할 수 있다. 보통은 다음과 같다.

      snd1 <Yamaha 2-OP FM> at 0x388 irq 0 drq 0

    소리를 들어보고 좋으면 사용하고 아니면 rmmod Beep 명령으로 모듈을 제거해 줄 수 있다.

     

3. FAT32 의 사용

    FAT32 는 윈도우즈 시리즈에서 파일 시스템의 용량 손실을 막기 위한 새로운 FAT 파일 시스템이라고 할 수 있다. 그러나 리눅스가 이것을 지원하기 위해서는 커널 패치를 해야 한다. FAT32를 패치하기 위해서는 원래의 커널에서 다음과 같은 것이 설정되어 있어야 한다.

    새로운 커널을 만들기 위해서는 유니 코드와 파일 시스템에 대한 Native language support 옵션(CONFIg_NLS)과 코드 페이지와 문자 세트를 선택해야 한다. 기본으로 되어있는 마운트 옵션은 codepage=437 이고 iocharset=iso8859-1 이다. 코드 페이지 437은 U.S.English 이고 iso8859-1 은 Latin 1 문자 셋트이다. 이것들은 보통의 유럽과 미국에서 사용되는 것이다. 이것이 잘 지정되어 있다면 마운트하는 것은 보통의 vfat이나 msdos 와 같다. 패치하는 중에 간혹 컴파일이 문제가 되는 경우가 있는데 이럴 때는 소스 디렉토리에서 .config 파일을 확인하여 CONFIG_NLS 가 설정되어 있고, CONFIG_UVFAT_FS 이 설정이 안되어 있는지를 확인한다. 아마 대부분의 컴파일 문제는 여기에서 비롯될 것이다. 추가적인 참고 사항은 다음 인터넷 페이지에서 볼 수 있다.

      chaffee/fat32.html

     

4. 하드 공간이 부족할 때

    만약 리눅스를 사용 중에 다음과 같은 에러 메시지를 받는다면 어떻게 할까?

      No space left on device?

    보통 리눅스를 맛 배기로 사용하려는 사람들은 리눅스의 설치에 그렇게 많은 용량을 할당하지 않는다. 그래서 가끔 보조 기억 장치의 용량 부족으로 이러한 에러 메시지를 받는 경우가 있다. 이럴 때는 아무 것도 못하게 되는데 결국 불필요한 내용을 지워줘야 하거나, 또는 추가적인 보조 기억장치를 장착하여 일부 디렉토리를 옮겨 주어야 할 것이다. 이 두 가지 방법도 상당히 고민을 해야 한다. 즉, 첫 번째 방법에서는 어떤 것이 불필요한 것인지를 생각해야 하고 두 번째 방법도 어차피 현재 위치에서는 지워지는 것이기 때문에 현재 위치에서 다른 곳으로 이동이 되었을 때, 이전과 동일하게 동작할 것인가를 생각해 봐야 하기 때문이다. 그러면 방법을 생각해보자.

    먼저 지우는 것은 개인적인 문제이기 때문에 다를 필요가 없고 보조 기억 장치를 추가한 경우를 생각해 보자. 추가적인 보조 기억장치를 장착한 후 현재 파일 시스템에 있는 것 중에서 옮겨야 할 것을 생각한다. 만약 옮겼다면 추가적인 보조 기억 장치를 마운트 한 후 원래의 디렉토리로 링크를 시켜서 사용할 수 있고, 아예 마운트 장소를 원래의 디렉토리로 할 수도 있을 것이다. 그러나 마운트라는 과정이 필요하기 때문에 부팅되는 과정에서 필요한 파일이 있는 디렉토리를 옮겨주면 부팅에 곤란한 문제가 생길 것이다. 즉, local 파일 시스템의 마운트는 부팅이 상당히 진행된 후에 이루어지기 때문에, 그전에 사용되는 fsck 나 그 외 여러 가지 명령어들은 옮기면 곤란하게 되는 것이다. 그래서 옮길 디렉토리를 잘 선택해야 한다. 특히 /bin 이나 /sbin 등은 절대 안될 것이다. 이러한 제약을 생각한다면 옮길 수 있는 디렉토리는 용량도 많이 차지하고 부팅시에는 사용하지 않는 디렉토리인 /uar 나 /home 디렉토리가 적당할 것이다. 보통 /usr 가 제일 많은 부분을 차지하게 되기 때문에 다른 장치로 옮기면 루트 파티션의 용량을 줄일 수 있을 것이다.

    이렇게 해서 옮기는 경우에 주의할 사항이 있다. 즉 우리가 보통으로 사용하는 cp나 mv 명령을 사용하면 옮기려는 동작에 문제가 생길 수 있다는 것이다. cp 명령은 옵션을 잘 확인하여 옮기려는 디렉토리 하위에 있는 모든 파일이 제대로 다 복사될 수 있도록 해야 하고 mv는 서로 다른 파티션 사이에는 동작하지 않는다. 그러므로 주의가 필요하다.

    이때 사용될 수 있는 명령이 tar 이다. 이 명령은 기존의 모든 파일들을 그 파일의 특성을 모두 가진채로 묶어주기 때문에 옮기기에 편하고 에러가 발생할 가능성도 상당히 줄어들게 된다. 물론 옮겨서 다시 풀어야 하기 때문에 두 배의 용량이 필요한 단점이 있지만, 옮긴 후 실행이 안돼서 곤란하게 되는 것보다는 나을 것이다.

    이제 순서를 따라가면서 정리를 해보자. 먼저 새로운 보조 기억 장치(주로 하드디스크가 될 것이다)를 장착한 후 ext2 파일 시스템을 구성한다. 새로 추가된 하드디스크가 Secondary IDE 의 Master 라면 다음과 같이 하면 될 것이다.

      [root]# fdisk /dev/hdc

    실행하여 파티션을 하드 전체로 잡고 ext2 시스템으로 사용한다고 지정한다. 다음에 파일 시스템을 구성한다.

      [root]# mke2fs /dev/hdc1

    위와 같이 하면 사용할 수 있다. 이것을 아무 디렉토리나 마운트해서 옮기려고 하는 디렉토리를 tar로 묶어서 그 하드로 복사하여 그 하드에서 untar 해준다. 이러면 원래의 디렉토리가 새로운 하드에 구성이 되었다. 이것을 부팅시에 바로 마운트 될 수 있도록 하기 위해서 /etc/fstab 편집해 준다.

      /dev/hdc1 /usr ext2 defaults 0 0

    이와 같이 해주면 부팅시에 바로 마운트가 되기 때문에 하드 디스크를 추가하기 전처럼 바로 사용할 수 있다. 혹시 문제가 생기면 single 모드로 부팅한 후

      bash# e2fsck /dev/hdc1

    을 해주면 된다.

     

5. 프로그램의 감시

    가끔은 어떤 사용자가 로그인 되어 있는지 또는 파일이 얼마나 사용되는지 어떤 프로그램이 어떻게 실행되고 있는지 확인하고 싶을 때가 있다. 특히 서버 운영자라면 계정 이용자들의 상태를 확인하고자 할 때가 있다. 보통은 프로세스를 보고 사용자를 확인하거나, 또는 정기적으로 디스크에 대한 보기명령을 내림으로써 확인을 한다. 그러나 상당히 불편하다. 그래서 여기에 필요한 프로그램이 있다. 간단히 유틸리티가 효용성이 많은 때가 있다. 소개할 프로그램은 watch 라는 프로그램이다. procps 프로그램과 같이 따라오는 유틸리티이다.

    사용법은 다음과 같다.

      watch [-n] 초단위시간 프로그램 [인자...]

    초단위시간이란 프로그램이 시간 단위로 갱신되게 하는 것이다. 지정을 하지 않으면 기본으로 2초가 지정된다. 만약 현재 디렉토리에 있는 파일의 크기를 2초마다 확인하고 싶다면 다음과 같이 하면 된다.

      watch ls -1

    위와 같이 하면 다음과 같은 결과가 나타나며 매 2초마다 이것이 갱신된다.

      Every 2 seconds          ls -al            Wed Apr      8 22:27:13 1998
      total   34
      drwxrwxr-x   2 enlighte enlighte       1024 Apr      8 22:27   .
      drwxrwxr-x   5 enlighte enlighte       1024 Apr      8 03:09  . .
      -rw------  1 enlighte enlighte      24576 Apr      8 22:25   .tip5.txt.swp
      -rwxrwxr-x   1 enlighte enlighte       6891 Apr      8 03:39   tip5.txt
      -rw-rw-r-   1 enlighte enlighte             0 Apr      8 22:27   ttt.txt

    만약 로그온 한 사용자들을 보고자 한다면 다음과 같이 입력한다.

      watch -n 10 w

    결과를 보면 위와 비슷하고 w 라는 사용자 확인 명령이 실행됨을 알 수 있다.

      Every 10 seconds               w                 wed Apr 8 22:30:55 1998
      10:30pm   up   6:53,   2 users,   load average : 0.49, 0.48, 0.41
      USER       TTY       FROM       LOGIN@  IDLE     JCPU     PCPU   WHAT
      root          tty1                      3:38pm    6:51m   0.31s    0.16s   -bash
      enlighte    tty2                      3:39pm    6:51m   27.78s   0.07s   sh /usr/X11R6/b

    간단한 유틸리티지만 사용하기에 따라서 활용도가 있을 것으로 생각한다.

     

6. syslog 메시지 출력

    시스템 상황에 대한 메시지를 출력할 곳을 지정하는 파일이 /etc/syslog.conf 파일이다. 만약 가상 콘솔에 syslog 메시지를 출력하고 싶다면 간단히 해결할 수 있다. 먼저 사용할 가상 콘솔을 확인하고 syslog.conf 파일에 다음과 같은 내용을 추가 시킨다. 만약 /dev/tty12 에 하고 싶다면 다음과 같이 입력한다.

      *.*    /dev/tty12

    이것은 모든 메시지가 가상 콘솔 /dev/tty12 에 출력하도록 하는 것이다. 이렇게 입력한 후 재부팅하고 alt-F12 로 이동해가면 출력되는 내용을 볼 수 있을 것이다.




▲ top

home으로...