저자: 『IT EXPERT, 유닉스 시스템 프로그래밍』의 저자 정재은(
imarchie@korea.com)
시스템 프로그래머들이 한결같이 하는 말이 있다.
"관련 책이 없다."
필자도 마찬가지로 시스템 프로그래밍 관련 서적의 부재로 인하여 책보다는 주로 관련 소스를 분석하여 프로그래밍을 하곤 했다. 이 책 한 권으로 모든 시스템 프로그래밍을 포용할 수는 없겠지만 그 토대를 마련하겠다는 생각으로 『IT EXPERT, 유닉스 시스템 프로그래밍』을 집필하게 되었다.
이 책은 총 7장으로 구성되어 있다.
"1장 유용한 기법들"에서는 시스템 프로그램을 하면서 꼭 알아 두면 유용한 것들을 집중적으로 다룬다. 특히 vi나 셸에 대한 비중이 높은데 이는 프로그래머가 프로그램을 좀더 쉽고 빠르게 하도록 도와주기 때문이다.
"2장 효율적인 프로그래밍을 위한 C 관련 툴"에서는 프로그램을 작성하다 보면 필연적으로 만나게 되는 프로그램 에러와 이를 효과적으로 처리하기 위한 기법들을 다양하게 다루고 있다. 먼저 ctags라는 툴을 이용하여 소스를 분석하고 논리적인 에러를 쉽게 찾을 수 있도록 하고, make를 이용하여 프로그램을 효율적으로 관리하며, gdb를 이용하여 심각한 에러를 처리한다. 이 외에도 awk나 sed를 이용하여 복잡한 프로그램을 간단하게 처리하는 방법도 배우게 될 것이다.
"3장 시스템 프로그래머를 위한 셸 프로그래밍"에서는 제목 그대로 셸을 주로 다룬다. UNIX를 잘하는 사람치고 셸을 못하는 사람은 별로 보지 못했다. 셸은 독자 여러분의 프로그램을 한단계 진보시켜 줄 것이다. 경험을 많이 쌓을수록 셸의 사용빈도도 높아지고 C로 작성하기 보다는 셸로 처리하는 경우도 많아 질 것이다. 셸의 사용을 생활화 해보자. 또한 이를 프로그램과 연결시키는 방법도 생각해 보도록 하자. 3장의 마지막 부분에는 이를 시도하려는 사람에게 유용한 예제들을 다루고 있다.
- 디스크 용량을 가장 많이 차지하는 하나의 파일찾기
- 가장 큰 파일을 가진 사용자에게 메일 보내기
- 각 사용자의 디스크 용량 구하기
- 코어 파일 지우기
- 오브젝트 파일 지우기
- set-user-id 권한을 가진 파일 관리하기
- 수천 명에게 메일 보내기
- 중복된 사용자 지우기
- 현 시스템의 사용자 수 알아내기
- ncd 만들기
- 휴지통 만들기
- 디렉토리만 long형으로 나열하기
"4, 5, 6장"은 "유닉스 명령어 만들기"를 다루는 부분으로 필자가 가장 신경을 쓴 부분이다. 시스템 프로그램을 시작하는 초보자들에게도 적합하도록 최대한 배려를 기울였다고 생각한다. ls에 대한 소스하나를 나열하고 이를 자세히 설명하는 방식이 아니라 ls의 가장 기본적인 프로그램을 하나 작성한 후 이것에 살을 붙여나가는 방식을 택했기 때문에 누구나 쉽게 소스를 분석할 수 있도록 하였다. 그리고 ls의 모든 옵션을 구현하여 방대한 소스를 만들어 가는 것이 아니라 최대한으로 필요하면서도 요긴하다고 생각되는 것들만을 구성해 나갔기 때문에 소스의 양도 부담없도록 하였다. 명령어들은 파일과 관련이 깊은 ls, cat, cp, head, uniq, od, wc, grep, find와 시스템 관련 명령어인 du, finger, ps, df등으로 구성되어 있다.
"7장 시스템 정보 보여주기"에서는 현재 서버의 시스템 정보를 connector가 받고 이를 자바의 EJB가 DB에 저장하며 저장된 정보를 XML의 svg로 변환하여 웹에서 보여주고 서버의 상태가 좋지 않을 때(다운되거나 서비스가 중지되었을 때) 이를 메일이나 SMS로 알려주는 작업을 진행하고 있는데 책에 나오는 소스는 그 중 일부분이라 할 수 있다. 원래의 목적은 핸드폰으로 서버를 제어하는 데까지 해보려고 하였으나 윈도우와의 결합이 불가피하여 책에서는 모두 표현하지 못했다. 8월말 경이 되면 필자가 운영하는
www.freechal.com/AdvancedUNIX 사이트에 핸드폰과 PDA에서도 제어할 수 있는 소스를 공개할 예정이다. 7장은 썬 솔라리스에 국한한 것이다. 다른 시스템에서 사용하려면 수정을 해야 한다. 특히, 리눅스는 상당히 많은 부분을 고쳐야 할 것이다. 리눅스와 유닉스는 서로 비슷한 것 같지만 시스템적인 프로그램을 하게 되면 상당히 틀려지게 된다는 것도 기억해두자.