우분투 사용시….발생되는 쉘 스크립트 실행 에러..

 리눅스 배포판을 우분투를 사용할 경우 쉘 스크립트를 작성할 때 한가지 주의 사항이 있다.

 평소와 같이 쉘 스크립트를 작성 후, 실행을 시키면 아마도 다음과 비슷한 메시지를 보게 될 것이다.

Syntax error: “(” unexpected operator

 이는 /bin/sh 실행 파일의 경로 때문에 발생되는 일이다.

 보통의 우분투에서 ls -l /bin/sh 를 실행하면 다음과 같은 결과가 나온다.

사용자 삽입 이미지

 /bin/sh 의 심볼릭 링크 경로가 bash 가 아닌것이다. 그래서 위와 같은 에러가 발생되는 것이다.

 참고로 우분투에서는 기본적으로 /bin/sh 가 dash 와 연결되어 있다. 그러므로 에러를 잡기 위해서는 /bin/sh 를 bash 로 바꾸어주던가, 혹은 스크립트 첫 머리의 #!/bin/sh 문장을 #!/bin/bash 로 바꾸면 된다.

 /bin/sh 를 bash 로 연결짓는 명령은 다음과 같다.

 # ln -s /bin/sh bash

아스키 아트와 안시 코드

 아스키 아트

 아스키 문자 셋을 이용한 그래픽 표현, 대화방에서 이용하는 스마일리 (Smiley)에서부터 사진 이미지를 변환한 것까지 다양하게 표현할 수 있다. 터미널을 이용한 PC 통신을 많이 사용하던 때에는 아스키 아트에 안시 코드로 색상을 입힌 텍스트 안시로 표현한 다양한 이미지를 많이 사용했다.

 안시 코드

 ANSI(American National Standards Insitute) 미국 표준 협회이다. 이곳에서 정한 시스템의 입출력 규정을 안시 코드라고 한다.

banner (문자 확대 출력)

 워드 프로세서가 보편적이지 않았을 때 큰 글자의 출력을 위해 많이 사용된 명령이다.

banner [-wn] 문자열 (Language : text)
-w : 기본적으로 출력되는 칸수는 132칸이나 -w 옵션을 사용하여 열 수를 정해 줄 수 있다. n 값이 없을 경우 80열로 표현된다.

n : 확대되어 출력되는 열 수

 문자열을 확대 출력할 때 사용된다. 문자가 # 으로 표현되어 확대 출력된다. 지금은 거의 사용하지 않는 명령이지만, 간혹 아스키 아트 등에서 큰 글씨를 표현할 때 이용하기도 한다.

 banner 명령에 별다른 옵션을 주지 않았을 경우에는 기본 값으로 132 열을 사용해서 확대 출력을 하게 된다. -w 옵션을 사용하면 확대하고 싶은 크기의 열 수를 정해 줄 수 있다. 다음은 “pchero” 문자열을 50열로 확대 출력한 예제이다.

사용자 삽입 이미지

 문자를 # 으로 표현하기 때문에 열 수가 많을 수록 미려한 글씨체를 얻을 수 있다.

배드 블럭(Bad Block) 과 블럭(Block)

 배드 블럭(Bad Block)

 디스크의 물리적 손상을 말한다. 디스크에 블럭을 잡아 정보가 저장 되게 하는데 충격이나 노후로 인하여 배드 블럭이 생길 수 있다. 요즘 나오는 하드디스크들은 대부분 하드디스크 자체적으로 배드 블럭을 체크하여 관리한다.

 리눅스에서는 파일시스템 생성 시 배드 블럭에 관한 정보를 초기화하여 갖게 되며 하드 디스크의 노후로 배드 블럭이 특정 부분에 많을 경우 파티션을 나누어 특정 부분의 사용을 막기도 한다.

 블럭(Block)

 블럭이란 파일 시스템이 항상 연속적으로 할당하려고 하는 데이터의 크기를 뜻한다. 예를 들어 파일 시스템의 블럭 크기가 8 KB 라면, 8 KB 까지의 파일 크기는 디스크의 여러 부분에 나뉘어 있지 않고 항상 물리적으로 같은 자리에 연속으로 존재한다. 이것은 디스크의 물리적 블럭과는 또 다른 것이다.

 블럭의 크기가 크다면 파일 시스템에 접근하는 성능은 좋아지지만 블럭 한 개의 크기보다 작은 크기의 파일이 생성되더라도 블럭 하나가 낭비되는 것이므로 용량의 효율은 떨어딘다. 또한 블럭의 크기가 작다면 공간 낭비는 최소화 할 수 있으나 성능이 떨어지는 점이 있다. 유닉스나 리눅스에서는 보통 512 Byte 크기의 블럭을 사용한다.

badblocks (배드 블록 검사)

 저장 장치의 배드 블록을 검사하는 명령어

badblocks [옵션] [장치] [블록 개수] (Language : text)
장치 : 검사할 장치를 지정한다.

블록 개수  : 검사할 장치의 블록 개수

-b 블록 크기   : 블록 크기를 바이트 수로 나타낸다.

-o 파일  : 배드 블록 체크내용을 파일에 저장한다.

-v : 배드 블록 체크 내용을 상세히 보여준다.

-w : 각 블록에 몇 가지 패턴으로 쓰기, 읽기를 하면서 테스트한다.

 각 디스크의 배드 블록을 검사하는 명령이다.

 시스템의 /dev/hda1 디스크의 배드 블록을 검사해보자. 이 때 블록 개수를 알기 위해 먼저 fdisk 를 실행하여 디스크 정보를 확인하자. 블록 개수는 다음과 같은 방법으로 확인할 수 있다.

사용자 삽입 이미지

 위 명령의 결과로, /dev/sda1 에는 15358108 개의 블록이 있다는 사실을 알 수 있다.

사용자 삽입 이미지

 15358108 디스크 블럭에 1개의 배드 블럭이 발견되었음을 보여 준다.