UNIX Administration Chapter 25, 26

Download Report

Transcript UNIX Administration Chapter 25, 26

UNIX System Administration
Chapter 25 Printing and Imaging
개요
• BSD 스풀링 시스템
 lpd
 lpc
 lpr
• ATT 스풀링 시스템
 lpsched
 lpadmin
 lp
• 어떤 프린팅 스케줄러가 있는지 조사
 lpd
 lpsched
2
프린팅 용어
•
•
•
•
•
•
•
•
•
•
spooler
dpi (dots per inch)
PDL (Page Description Language)
bitmap
RIP (Raster Image Processor)
PostScript
HPGL (Hewlett-Packard Graphics Language)
PCL (Printer Command Language)
QuickDraw
roff
3
ATT 프린팅 : 개요
USER
lp xxxxx
spool directory
/var/spool/lp/requester/dest
Printer
lpsched
LOG
/usr/spool/lp/log
4
ATT 프린팅 명령어
lp
lpsched
lpshut
lpstat
cancel
lpmove
lpadmin
accept
reject
enable
disable
-
lpr
lpd
lpq
lprm
/etc/printcap
lpc enable
lpc disable
lpc start
lpc stop
lpc topq
인쇄하기 위해 작업을 보낸다.
프린팅 디몬
프린팅 디몬을 정지 시킨다.
큐의 상태를 점검한다.
큐에 있는 작업을 제거한다.
큐에서 다른 큐로 작업을 이동시킨다.
프린팅 시스템을 설정한다.
큐를 작동시킨다.
큐를 중지시킨다.
장치에 프린팅을 시작시킨다.
장치에 프린팅을 정치시킨다.
큐에서 작업 순서를 바꾼다.
5
lp
• 데이터의 복사본이 프린트 되게 하기 위해 스풀 디렉토리
(spool directory)안에 있는 파일에 기록
• Spool directory
 /var/spool/lp/requests/dest
 dest: printer or class of printers
 dest 디렉토리안에 xxxn (jobid)
• -d destination (printer or class)
• -d 없으면 lp는 환경변수 LPDEST 값을 출력 장치 이름으
로 사용
6
lpsched 과 lpshut
: 프린트 시작하고 멈추기
• lpsched
 스풀에 있는 파일을 적절한 장치가 사용 가능할 때 그 장치로 보내
는 디몬
 /usr/spool/lp/log 에 오류 보관
 Solaris : /usr/sbin/lp, /usr/lib/lp/lpsched, /usr/lp/logs (또는 /var/lp/logs)
11/05 14:23:38: Print services stopped.
11/05 14:25:27: build info: 07/15/97:21:39:52
• lpshut
 lpsched 중단
 lp 는 계속 작업을 큐에 저장시킬 수 있으나 프린트는 되지 않음
 lpsched 디몬이 다시 실행되면 프린트 재개
• /usr/spool/lp/SCHEDLOCK
 오직 하나의 lpsched 만 실행되게 하기 위해 생긴 파일
7
lpadmin
: 프린트 환경 설정하기
• 새 프린터 추가
/usr/lib/lpadmin -pprinter -vdevice { -eprinter | -mmodel | -iinterface } [ cclass… ] [ { -l | -h } ]
• /usr/spool/lp 에 텍스트 파일 생성
• lpsched 은 lpadmin 실행전에 lpshut 으로 중단되어야 함
• 인터페이스 프로그램이 프린트하기전에 formatting
-eprinter | -mmodel | -iinterface
• Solaris 는 /etc/lp/interface 에 인터페이스 프로그램 저장
• -xprinter : 프린터 제거
• ex)
 /usr/lib/lpadmin -ppr1 -v/dev/tty06 -mdumb -cpr
 /usr/lib/lpadmin -ppr2 -v/dev/tty07 -epr1 -cpr
 /usr/lib/lpadmin -ppr1 -rpr -cfast
8
reject 와 accept
: 스풀링 제어하기
• reject : 스풀링 요청 거부하게 하기
ex)
% /usr/lib/reject -r”pr1 will be down untile Tuesday” pr1
% lp -dpr1 afile
lp: cannot accept requests for destination “pr1”
-- pr1 will be down until Tuesday
• accept : 스풀링 요청 받아들이게 하기
accept 는 lpadmin 으로 추가된 모든 프린터에 적어도 한번은 수행
되어야 함
• reject 와 accept 는 클래스에 대해서도 적용 가능
9
기타
• Cancel : 프린트 작업 제거하기(작업번호는 lpstat 으로)
 cancel 576
 cancel pr1
• disable and enable : 프린트 제어하기
 disable : lpsched에게 특정 프린터로 작업 보내는 것을 중지
 reject 와 달리 lp 의 queuing 중지하지 않음
 disable 은 현재 진행되는 작업 중지 않음 (단, -c 로 가능)
 reject 처럼 -r flag (설명) 지원
 enable : 특정 프린터 다시 작동
• lpmove : 작업 전송하기
 /usr/lib/lpmove lpt-16 lpt-18 pr2
 /usr/lib pr1 pr2
10
기타
• lpstat : 상태 정보 얻기
•
ATT


lpstat -o
cancel
•
BSD


lpq
lprm
11
Solaris
• 프린터 연결
• rebooting
• admintool 로 프린터 설정
 프린터 추가
 해당 프린터 설정
 프린터 포트 : parallel port 로 설정
/dev/term/a (serial port)
/dev/term/b (serial port)
/dev/bpp0 (parallel port)
 파일내용 : ASCII 로 설정
12
인터페이스 프로그램들
• lpsched 가 지정하는 파일에 대한 정보를 얻어 오고, 그 내용을 포맷
한 결과를 표준 출력
• 출력 장치에 대한 정확한 모드 설정
• headers 와 trailers 생성
• 각 프린터별 인터페이스 프로그램 파일(shell script 또는 binary)
/usr/spool/lp/interface/printer
• lpsched 는 아래 인수로 인터페이스 프로그램 호출
jobid user title copies options file [file…]
• 성공하면 returns 0
에러 생기면 returns integer 1~127
• BSD : 포맷별로 다른 인터페이스 프로그램
• ATT : 모든 데이터 처리하는 인터페이스 프로그램
13
문제 해결하기(Trouble Shooting)
• 문제의 프린터 완전히 삭제하고 다시 시작
• (예)
#
#
#
#
#
lpshut
lpadmin -xdest
find /usr/spool/lp -name dest -exec rm -rf {} \;
lpsched
lpstat -t
14
이기종 간의 스풀링(Cross-Platform Spooling).
• 원격 프린터 연결문제 해결위해 참조할 곳
 허가권 확인 위해 프린터 연결된 호스트의 system log file
 이름과 허가권 확인위해 보내는 호스트의 system log file
 장치 이름과 포맷 오류 확인위해 프린팅 호스트의 print daemon
log file (/usr/spool/lp/logs)
 필터, 프린터, 디렉토리가 제대로 있는지 확인위해 프린팅 호스
트의 print daemon log file (/usr/spool/lp/logs)
 전송 오류 확인위해 프린팅 호스트의 printer log file
15
이기종 간의 스풀링(Cross-Platform Spooling)..
• Solaris 에서 Solaris 로 스풀링 하기
 To add or modify an existing system
lpsystem [ -t type ] [ -T timeout ] [ -R retry ] [ -y comment ] system-name ...
 To list a system (or all systems)
lpsystem -l [ system-name ...]
 To remove a system
lpsystem -r system-name ...
 To get the TCP/IP address for the local port-monitor
lpsystem -A
• (예) Solaris에서 원격 프린터(server!printer)로 스풀 설정하기
# lpsystem -t bsd server (모든 BSD와 HP-UX)
또는 # lpsystem -t s5 server (Solaris)
server has been added
# lpadmin -p rpr1 -s server!pr1 -I and -T unknown
#accept rpr1
16