RedHat Linux >> System Administration for Redhat Linux
|
[목차] |
제3장 시스템 관리 기초
7. 프린터 관리
1. 프린터 설치 및 설정하기 다음은 로컬 프린터를 설치하는 방법을 설명합니다. 네트워크 프린터는 다음에 설명합니다.
printtool 명령을 실행합니다.
그러면 아래와 같이 레드햇 프린터 관리자가 열립니다.
[Add] 버튼을 눌러 프린터를 설치합니다. 제공한 커널에서 프린터 모듈을 컴파일하므로 자동으로 사용가능한 프린터 포트를 다음 화면과 같이 보여줄 것입니다. 다음과 같은 화면이 나온다면 [OK]버튼을 누릅니다.
로컬 프린터 엔트리 창에서 다른 항목들을 기본값으로 두고, [Select]버튼을 눌러 프린터 목록에서 해당 프린터 기종을 선택합니다.
프린터 목록에서 해당하는 기종이 없다면, 가지고 있는 기종과 호환성이 있는 기종을 선택합니다. HP Deskjet시리즈는 대부분 지원을 할 것입니다. Paper Size를 선택합니다. A4전용이라면, A4를 선택합니다. Color Depth/Uniprint Mode에서 원하는 형태를 지정합니다. 프린터 종류에 따라, 형태가 다양하게 나타납니다. 칼러가 지원한다면, Color 모드를 지정해야 칼러를 사용할 수 있습니다. 환경설정이 끝났다면, [OK]버튼을 클릭합니다. 그러면, 아래와 같이 Input Filter항목에 프린터 기종이 등록되었음을 볼 수 있습니다. [OK]버튼을 클릭합니다.
프린터 시스템 제어 창에서 추가된 프린터를 마우스로 클릭한 후 메뉴 가운데 [lpd]에서 [Restart lpd]를 클릭하여 프린터 데몬을 다시 띄웁니다. 그리고 나서 [Tests]메뉴에서 [Print Postscript test page]를 클릭하여 프린팅이 제대로 되는지 확인합니다.
2. 프린터 관리하기 가. 프린터 이해하기
현재 대부분의 리눅스 배포판에서 사용하는 프린팅 시스템은 bsd 방식의 프린팅 시스템이라고 부른다. bsd 방식의 프린팅 시스템은 다음고 같은 요소로 이루어져 있다.
● 프린터 데몬 lpd
● 프린터 애플리케이션 plr, lprm, lpq, kpc
● 프린터 설정 파일 /etc/printcap
● 프린터 스풀 디렉토리 /var/spool/lpd
다중 사용자, 다중 프로세스 운영체제에서의 프린팅은 스풀링(spooling)이라는 기법을 사용한다. 많은 사용자들의 많은 프로세서로부터 프린팅 요청이 들어오면 그것을 그 즉시 처리하는 것이 아니라, 스풀 디렉토리에 보관해두고 프린팅 데몬인 lpd는 작업 순서가 꼬이거나 서로의 작업이 방해하지 못하도록 중재 역할을 해준다.
프린팅할 작업을 등록하는 명령은 lpr이다. 보통 lpr 다음에 프린팅할 파일명만 적어주면 프린팅 작업을 등록할 수 있다. 프린터 정의 항목이 많고, 특정 프린터 이름을 지정하고자 할 때는 -p<프린터 이름> 옵션을 사용한다. lprm은 등록한 프린트 작업내용을 취소할 때 사용한다. 관리자는 모든 사람의 프린트 작업을 스풀에서 지울 수 있고, 각자는 자신의 프린트 작업만을 지울 수 있다. lpc는 프린트 시스템을 관리하는 관리자용 프로그램이다.
bsd 프린팅 방식에서 프린터에 대한 설정 파일은 /etc/printcap 파일이다.
나. 프린터 설정 파일 /etc/printcap
/etc/printcap 파일의 내용은 위와 같은 스타일로 되어 있다. 프린터 설정 항목들은 콜론(:)으로 구분되며, 원래는 한 줄로 적어주어야 하는데, 여러 줄에 걸쳐 한 줄을 입력한다는 표시로 중간 행의 끝에는 역슬래시(\) 문자를 적은 것에 유의하자.
프린트 설정 옵션을 하나하나 익혀서 손수 적어줘도 좋겠지만, 레드햇 리눅스에서는 프린터 제어판을 통해 자동 생성한다. 하지만, 자동으로 생성된 내용이라 할지라도 옵션을 이해해 두면 문제가 발생할 때 대처할 수 있기 때문에 간략하게 알아보겠다.
우선, 프린터 설정은 논리적인 프린터 이름부터 시작한다. 맨 처음 콜론(:)앞에 적은 lp가 바로 논리적인 프린터 이름이다. 실제적이고 물리적인 프린터 이름은, 예를 들어 hp레이저젯과 같은 프린터 제조업체와 모델명일 것이다. lp란 행 단위 프린터(line printer)를 의미하는 단어이지만, 프린팅 시스템이 행 단위 도트 프린터 시절부터 있었으므로 현재에도 전통적으로 사용하는 이름이다. lp는 시스템의 기본 프린터 이름으로서, 나중에 lpr 명령을 사용할 때 -p 옵션을 주지 않으면 -plp가 붙은 것과 같다.
이름은 name0|name1|name2 이런 식으로 | 문자를 사용하여 별칭을 줄 수 있다. lp|laserjet 이라고 적으면 프린터 이름을 lp라고 하든, laserjet 이라고 하든 두 이름은 같은 항목을 가리키게 된다.
설정 항목 설 명 lp= 프린터 장치 파일명 sd= 스풀 디렉토리 이름 lf= 에러 메시지를 기록할 파일 if= 필터 프로그램 이름 rm= 원격 프린팅 호스트의 이름 rp= 원격 프린팅 호스트상의 프린트 큐(queue)이름 sh 배너 페이지를 찍지 않는다. sf 프린팅 작업을 마칠 때 페이지 전송 문자 ff를 보내지 않음. mx# 프린트 작업 파일의 최대 크기
다. 지역 프린터(local printer)
지역 프린터랑 패러렐 포트를 통해 컴퓨터와 직접적으로 연결되어 있는 프린터를 가리킨다. 지역 프린터라는 이름은 원격 프린터(remote printer)에 대한 상대적인 이름이다. 리눅스는 유닉스처럼 네트웍을 통해 연결된 원격 프린터로 프린트 작업을 보낼 수 있고, 반대로 원격 호스트가 보내오는 프린트 작업을 처리할 수 있다.
지역 프린터 설정에서 처음에 무엇보다도 중요한 것은 lp= 설정이다. lp=/dev/lp1처럼 lp= 설정 다음에 프린터 장치명을 적어준다. /dev/lp0, /dev/lp1 등의 프린터 장치명은 리눅스 커널 2.0까지 시리얼 포트의 명명법과는 조금 다른 방식을 사용한다. 대부분의 pc에서 여러분의 첫 번째 프린터 포트의 장치명은 /dev/lp0가 아니라 /dev/lp1이다. 장치명 부여 방법이 장치가 사용하고 있는 입/출력 주소와 연관되어 있다. 알파 또는 스팍/리눅스의 경우 첫 번째 프린터 장치명은 /dev/lp0인 경우가 많다.
자기가 사용하고 있는 프린터 장치명이 어떤 것인지 알아볼 때는 간단히 echo 명령을 사용하면 된다.
[root@leelab /]# echo > /dev/lp0 [root@leelab /]# echo > /dev/lp1 [root@leelab /]# echo > /dev/lp2
위 명령 중 프린터가 반응하는 장치명이 여러분이 사용할 장치명이다.
sd=는 스풀 디렉토리 이름으로서 필수적이다. 리눅스에서는 스풀 디렉토리가 /var/spool 밑이다. 노(suppress header)를 설정하면 프린트 작업을 보낼 때마다 앞에 나오는 배너 페이지가 안나오게 할 수 있다. 배너 페이지란 프린트 작업이 누구의 것이지 보여주는 페이지로서, 다중 사용자 환경에서 프린트물이 누구의 것인지 알려주는 표시이다. 개인 사용자는 이 페이지가 필요치 않으므로 넣어준다. 하지만, 여러 사람이 쓸 수 있도록 하는 네트웍 프린터에서는 sh를 넣지 안아야 할 것이다.
sh(suppress formfeed)는 모든 출력을 마친 후 용지 전송 명령을 보낼 것인지 여부를 결정한다. 맨 마지막 프린트물이 나오지 않는 경우가 잇는 데, sf를 넣어주면 맨 마지막 페이지가 프린터에 남아 나오지 않는 일은 없을 것이다. 하지만, 어떤 경우에는 빈 종이가 꼭 하나씩 나올 수 있으므로 여러분의 상황에 맞게 처리한다.
mx#는 프린터 스풀 파일의 최대 크기를 지정하는 것으로서, 다중 사용자 환경에서 개인이 너무 많은 프린트 작업을 한 번에 보내어 다른 사람을 방해하지 못하게 할 때 유용하다. 0을 적으면 파일의 크기는 무제한이다.
▶ 필터 프로그램 등록 if= if= 설정은 input filter라는 뜻이다. 리눅스에서의 프린팅은 바로 이 입력 필터라는 개념에 크게 의존한다. 입력 필터 프로그램은 레드햇 배포판에서 고스트스크립트(gs)라는 포스트스크립트 해석 엔진과 각종 그래픽 변환 프로그램을 사용하도록 자동으로 만들어 주므로 매우 편리하다. 또는, aps 필터 라는 유명한 프로그램의 것을 사용하기도 하는데, 아무튼 프로그래밍(스크립트 프로그래밍 또는 c 프로그래밍)과프린터 명령 코드에 대하여 익숙하지 않은 사람은 자기가 만들어 쓰는 경우가 드물고, 필터 생성 프로그램의 도움을 받는 것이 일반적이다.
입력 필터란 프린트 작업을 위해 입력된 파일 내용을 프린터에 출력할 수 있는 형태로 또는 프린트하기 좋은 형태로 바꿔주는 모든 프로그램을 말한다. 입력 필터는 표준 입력으로부터 자료를 넘겨받아 표준 출력으로 보내는 구조를 갖는다.
보통 그냥 아스키 파일은 프린터로 직접 보내도 된다. 프린터는 모두 아스키 출력 모드를 기지고 있고, 프린터 자체의 폰트도 구비하고 있다. 한글 프린터는 ks/kssm 모드를 사용하면 한글 프린팅이 가능하다. 왜냐하면, 이것은 리눅스쪽의 기능이 아니라, 프린터 자체가 지원하는 기능이기 때문이다.
텍스트 파일에 대한 간단한 입력 필터로는, 예를 들어 pcl 이라는 프린터 명령 집합을 사용하는 hp 계열의 프린터를 들 수 있다. 이 프린터들은 한 줄을 찍고 나서 다음 줄의 앞으로 프린터 헤드가 전진하기 위해서는 도스 스타일의 cr+lf 코드를 전송해 주어야 한다. 하지만, 유닉스의 텍스트 파일은 오로지 lf만을 사용하기 때문에 그냥 아무 생각 없이 출력해 보면 계단 현상(staircase stepping)이라는 현상이 발생한다. 왜냐하면, cr이 보내지지 않았기 때문에 헤드를 행의 맨 앞으로 보내는 캐리지 리턴(carriage return)동작이 일어나지 않고 오로지 한 줄 전진만이 일어나기 때문이다.
이를 위해 한 행을 찍을 때마다 cr을 붙여주는 필터 프로그램을 사용하곤 하였다.
한글 프린터(ks/kssm 모드를 말함)에 간단한 명세표 같은 것을 출력하기 위해서 혹은 맨 처음 한 번 한글 모드로 전환하게끔 해주는 프린트 코드를 보내기 위해서도 필터 프로그램을 사용할 수 있다.
▶ 포스트스크립트(postscript, ps)와 고스트스크립트(ghostscript, gs) 리눅스에서 매우 많이 사용하는 문서 형식 중 하나는 바로 포스트스크립트(ps)이다. 포스트스크립트란 그래픽/디자인/출력 분야에서 드높은 명성을 가지고 있는 adobe 사에서 개발한 프린트 기술 언어이다. 이 언어로 쓰여진 문서 자체는 텍스트 파일이다. 따라서, .ps로 끝나는 수많은 하우투(howto)문서를 그냥 아무 생각없이 lpr howto.ps 라고 하면 적절한 입력 필터가 없을 때 그냥 내용 그대로 출력되고 만다.
레이저 프린터 중 고가의 프린터에는 하드웨어적으로 포스트스크립트 해석 엔진이 탑재되어 있는 경우가 잇다. 자신이 사용하는 프린터에서 포스트스크립트를 지원하고 있다면 연구실이나 사무실의 프린터 아니면 개인적으로 컴퓨터 귀족임에 틀림없다. 이 프린터에게는 그냥 ps 파일을 전송하기만 하면 알아서 위의 화면처럼 출력해 준다.
하지만, 대부분의 잉크젯 프린터, 저가 레이저 프린터, 그리고 구닥다리 도트 프린터에서는 포스트 스크립트 해석 엔진이란 찾아볼 수 없다.
포스트 스크립트와 같은 고급 프린트 기술 언어로 된 ps 파일을 저가의 프린터에서 출력하기 위해 ps 문서를 해석하여 프린터가 이해할 수 있는 언어(예를 들어, pcl, esc/p)로 변환해 주는 훌륭한 프로그램의 이름이 바로 고스트스크립트(ghostscript)이다. 이 프로그램은 알라딘(aladdin)이라는 회사에서 만들고 있는데, 고스트스크립트를 개발하면서 이전 버전을 fsf측에 기증하는 형식을 띠고 있다. 최신 버전은 구입하거나 개인적으로 받아 사용할 수 있다.
홈페이지 : http://www.cs.wisc.deu/~ghost/
이 곳에 가면 리눅스/유닉스 버전뿐 아니라 os/2, ms-dos, 윈도우즈, 매킨토시용 gs를 구할 수 이싸.
gs는 매우 거대한 프로그램이다. gs의 신 버전에는 지금까지 나온 프린터들이 사용하고 있는 언어를 이해하는 코드들이 들어가 있다. 여러분이 ps 파일을 프린터로 출력할 수 있는지 여부는 gs에서 여러분의 프린터 모델을 정확히 지원하는지, 아니면 프린터가 사용하는 호환 프린터 명령을 지원하는지에 따라 달라진다. pcl 언어를 사용하는 hp 계열의 프린터와 도트 프린터들은 거의 모두 지원하고 있다. pcl 언어는 pcl3, pcl4, pcl5 등 같은 pcl 언어라 할지라도 레벨이 다르므로 자신의 프린터에서 지원하고 있는 레벨을 잘 알고 있어야 한다.
레듯햇 리눅스에서는 gs가 지원하는 프린터 목록을 보여주고, 몇 번의 클릭만으로 쉽게 프린터 설정을 해주는 프린터 제어판이 있으므로 그것을 이용하라. 예전에는 이 모든 작업을 손수 하거나 aps 필터, 매직 필터라는 이름의특수한 프로그램들을 사용하였다. 자신의 모델과 똑같은 것이 없다 하더라도 프린터 언어가 비슷하면 지원된다.
레드햇 리눅스의 프린터 제어판에서는 gs를 이용한 프린터 필터를 만들어 준다. if= 설정이 가리키는 스크립트 파일을 보고 싶은 사람은 그 내용을 확인하라.
좀더 미려한 출력을 위해 텍스트 파일의 경우에는 ps로 변환하고, ps 파일을 다시 gs로 해석하여 찍는다.
라. 원격 유닉스 프린터(remote unix printer)
네트웍 프린팅 기능은 현대 운영체제에 있어서는 빼놓을 수 없는 기능 중 하나인데, 유닉스는 이미 그 기능을 초창기부터 가지고 있었으며, 리눅스도 예외는 아니다.
rm= 설정은 remote machine을 의미하며, 프린터가 연결되어 있는 호스트, 또는 네트웍 인터페이스를 가진 프린터에 부여되어 있는 호스트 이름을 나타낸다.
만약 상대방 프린터에 하나 이상의 프린터 큐 이름이 등록되어 잇고, 기본 값이 slp를 사용할 것이 아니라면 rp= 설정을 해주어야 한다.
나머지 설정은 모두 지역 프린터에서 설명한 것과 같다. lp= 설정은 /dev/null/로 해준다. 프린터 포트를 이용하는 것이 아니기 때문이다.
▶ 원격 프린트 허가 /etc/hosts.lpd, /etc/hosts.equiv 아무곳이나 프린트 작업을 보낼 수는 없다. 상대방 프린트 서버에서 위 파일 중 하나에 여러분의 호스트 이름 또는 주소를 적어주어야만 출력할 수 있으므로 허가권이 있는지 여부를 확인하라.
마. smb 프린터
레드햇 리눅스에서는 삼바(samba)라는 netbios 지원 프로그램을 사용하여 마이크로소프트 네트웍의 공유 프린터를 사용할 수 있게 해준다.
gs와 함께 smbclient 라는 클라이언트 프로그램과 smbprint라는 프린트 출력용 스크립트를 사용하여 복잡한 필터를 만들어 준다.
바. 프린트 명령
▶ 프린트 등록 명령 lpr bsd 방식의 프린팅에서는 lpr이라는 프린트 명령을 사용한다. 몇 가지 옵션들이 있기는 하지만, 알아둘만한 것은 -p<프린터 이름> 정도이다.
[root@leelab /]# lpr howto.ps [root@leelab /]# lpr -premote letter.txt
첫 번째 명령은 기본 프린터 큐 이름인 lp를 통해 howto.ps 파일을 출력한다. 두 번째 명령은 remote라는 이름의 프린트 큐에게 letter.txt 파일을 전송한다.
원격 프린팅 서버가 여러 개일 때는 그 모두를 등록하고 알맞는 곳으로 보낼 수 있다.
▶ 프린트 작업 확인 명령 lpq lpq 명령은 프린트 큐(queue)에 쌓여 있는 프린트 작업 내용을 확인하는 명령이다. 'lp is ready and printing' 이라는 메시지는 프린터가 작동중임을 나타낸다. 만약 프린터에 이상이 있을 대는 offline?과 같은 메시지가 출력된다. 그때는 프린터 설정 또는 프린터의 하드웨어 이상 유무를 확인한다.
순위(rank)는 여러 개의 프린트 작업에 대하여 각 프린트 작업이 어떤 순서로 출력될 것인지 알려준다. active는 출력중인 작업을 나타낸다. 그 다음 소유자(owner)는 프린트 작업을 보낸 계정 이름을 표시한다. 작업 번호는 일련 번호로서 시스템에서 순차적으로 매겨 나가는 것이다. 프린트 작업을 중지할 때 이 번호를 사용하므로 중요하다.
▶ 프린트 작업 취소 명령 lprm
[root@leelab /]# lprm [root@leelab /]# lprm 68 [root@leelab /]# lprm -
lprm 명령은 현재 출력중인 작업을 취소하게 한다. 프린트 데몬은 스풀 파일을 지우고 적절한 조치를 취해준다. lprm 명령 다음에 작업 번호를 적으면 그 작업 번호의 프린트 내용만 최소 된다. 만약 자신이 보낸 모든 출력 명령을 취소하고 싶을 때는 번호대신 - 문자를 입력한다.
|
[목차] |