다음 이전 차례

2. 리눅스 환경에서 문서출력

이 장(section)에서는 파일의 출력, 프린트큐(queue)의 시험, 프린트 큐에서 (대기중인) 작업(job)의 제거, 파일을 출력하기 전에 적당한 형식으로 변환하기, 프린트 환경설정에 대해서 설명한다.

2.1 리눅스 환경에서의 문서출력 변천사(History of Linux Printing)

리눅스의 문서출력 시스템---lp(Line Printer) 시스템---은 BSD(Berkeley Software Distribution)버전의 유닉스(UNIX)를 위해서 작성한 소스코드를 포팅(porting)한 것이다.

2.2 lpr을 이용한 파일 출력(Printing a File Using lpr)

현재까지 리눅스에서 문서출력하는 가장 간단한 방법은 파일을 프린트 디바이스(print device)에 바로 보내는 것(redirection)이다. 이렇게 하기 위해서 cat 명령어를 이용할 수 있다. root 권한을 가진 상태에서 다음과 같이 하면 된다.

# cat thesis.txt > /dev/lp

이 경우, /dev/lp는 실제로 프린트 작업을 수행하는 디바이스---도트 프린터, 레이저, 타입세터(typesetter) 또는 플로터 등---에 대한 심볼릭 링크(symbolic link)일뿐이다. 심볼릭 링크에 대해서 자세한 내용을 원하면 ln(1)의 맨페이지를 참고하라.

보안문제 때문에 root와 print 대몬(daemon)에 등록된 그룹의 사용자만이 프린터 디바이스에 직접 쓰는 것이 가능하다. 그렇기 때문에 프린터를 사용하기 위해서는 lpr, lprm, lpq를 사용해야 한다.

이러한 이유로, 사용자는 파일을 출력하기 위해서는 lpr을 이용해야 한다. lpr은 파일출력을 위해서 필요한 몇가지 초기화 과정을 수행한 다음 제어권을 lpd(line printer daemon)에게 넘겨 준다. lpd는 프린터에게 그 파일을 출력하는 방법에 관해 지시한다.

lpr은 실행되면서 lpd가 출력작업을 마칠 때 까지 (출력하도록) 지정된 파일을 보관하고 있도록 특정한 디렉토리(스풀 디렉토리)로 해당파일을 복사한다. 일단 lpd가 출력할 파일이 있다고 통보받으면 자신 자신을 복제한다.(프로그래머들이 forking이라고 하는 것이다) 복제된 사본은 원본이 별도의 요구를 기다리는 동안 해당파일을 출력한다. 이렇게 함으로써 동시에 여러개의 작업을 대기시킬 수 있다.

lpd의 문법(lpd(1)의 맨페이지 참고)는 아주 간단하다.

$ lpr [ options ] [ filename ... ]

파일명을 지정하지 않는 경우, lpr은 표준입력(standard input) (대개 키보드 입력이거나 다른 프로그램의 표준출력이다) 에서 입력받기를 기다린다. 이것은 사용자가 다른 프로그램의 표준출력을 전달(redirect)하여 프린터 스풀러 (print spooler)에게 전달하는 것을 다음과 같이 가능케 한다.

$ cat thesis.txt | lpr

또는,

$ pr -l60 thesis.txt | lpr

사용자는 몇가지의 명령행 옵션을 이용하여 lpr의 작동을 제어할 수 있다. 가장 널리 쓰이는 옵션으로는 다음과 같다. -P프린터이름 은 사용할 프린터를 지정한다. -h 는 burst page를 출력하지 않도록 한다.(원문: suppresses printing of the burst page) -s 를 사용하면 지정된 파일을 스풀 디렉토리로 복사하는 방법 대신 심볼릭 링크(symbolic link)를 한다. (크기가 큰 파일출력시 유용하다) -#값을 이용해서 출력할 문서의 장수를 지정할 수 있다. lpr과의 상호작용에 대한 예제는 다음과 같다.

$ lpr -#2 -sP dj thesis.txt

위의 명령은 thesis.txt를 스풀 디렉토리로 심볼릭링크하며 dj 라는 이름을 가진 (논리상의) 프린터로 출력하는데, 이는 lpd에 의해서 처리된다. 그런 다음 thesis.txt을 두장씩 출력한다.

lpr에서 사용가능한 모든 옵션을 보기 위해서는 lpr(1)의 맨페이지를 참고하라.

2.3 lpq를 이용한 프린트큐 관찰(Print Queue with lpq)

프린트큐(print queue)의 내부를 보기 위해서 lpq 명령어를 이용한다. 옵션없이 실행시키면 기본설정된(default) 프린터큐의 내용을 보여준다.

lpq가 보여주는 내용은 여러 가지 측면에서 유용하다.

$ lpq
lp is ready and printing
Rank   Owner      Job  Files                            Total Size
active mwf        31   thesis.txt                       682048 bytes

2.4 lprm을 이용한 프린터 작업 취소 (Canceling a Print Job Using lprm)

프린트 시스템의 유용한 기능으로 프린트큐에 들어있는 프린트 작업을 취소할 수 있는 기능도 있다. 이를 위해서 lprm을 이용한다.

$ lprm -

위의 명령을 실행한 사용자에게 소유된(owned) 모든 프린트 작업이 취소된다. 단일 프린트 작업은 lprm에게 lpq가 알려주는 작업번호를 지정하여 취소시킬수 있다. 다음의 예제를 참고하라.

$ lprm 31

작업번호 31(thesis.txt)을 취소시킨다.

2.5 lpc를 이용한 lpd 제어(Controlling the lpd program with lpc)

lpc(8)는 lpd가 처리하는 프린터를 제어하기 위해 사용된다. 프린터 또는 프린트 큐를 활성화 또는 비활성화시킬 수 있으며, 프린트큐 내의 작업순서를 새로 배열할 수 있으며, 프린터와 프린트큐의 상황에 대한 보고를 받아 볼 수 있다. lpc는 한 대의 리눅스 박스에 여러대의 프린터가 연결되어 있는 경우에 많이 사용된다.

$ lpc

위의 명령은 lpc 프로그램을 구동시킨다. 기본설정값(default)에 의해서 상호 대화모드(interactive mode)가 되며, 여러 가지 명령어를 사용할 수 있다. 그 밖에 명령행 옵션으로 lpc 명령어를 사용할 수 있다.

$ lpc status all

lpd의 맨페이지에서 사용가능한 명령어 목록을 볼 수 있지만, 이 글에서는 꼭 배워야 할 몇가지의 핵심 명렁어만 있다. option으로 표시된 부분에는 프린터의 이름(lp, print, ps, 기타)이나 모든 프린터를 의미하는 키워드 all을 입력하면 된다.


다음 이전 차례