CUPS에는 때때로 드라이버 문제 (HP 1010)로 인해 일시 중지되는 프린터가 있습니다.
CUPS에서 프린터를 재개하기 위해 시간당 한 번 실행되는 쉘 스크립트를 작성하고 싶습니다. 그러나 몇 분 동안 인터넷 검색을 한 후 셸 명령 줄에서 프린터를 다시 시작하는 방법을 모릅니다.
답변
컵에 넣을 수있는 명령이 있습니다.
cupsenable printer
비활성화 된 프린터를 시작합니다 ( lpstat -p
또는 프린터로 프린터를 나열 할 수있는 프린터 이름 찾기 lpc status
).
루트 또는 sudo를 통해 명령을 실행해야 할 수도 있습니다. 따라서 쉘 스크립트에서 프린터를 활성화해야한다면, 쉘을 루트의 크론 탭에 추가하거나 sudoers 파일을 편집해야합니다.
답변
실행중인 CUPS 버전에 따라 다른 방식으로 문제를 해결할 수 있습니다.
-
더 CUPS의 최신 버전 (버전 1.2 이상)는 여기에 도움이 할 수있는 내장 기능이 제공됩니다. “ErrorPolicy”라고합니다. 기본 설정은 cupsd.conf에서 선택되며 cupsd가 예상대로 작동하지 않는 인쇄 대기열을 처리하는 방법을 결정합니다. 각 대기열에 개별적으로 태그를 지정할 수있는 3 가지 옵션이 있습니다.
ErrorPolicy abort-job ErrorPolicy retry-job ErrorPolicy retry-this-job ErrorPolicy stop-printer
설명:
-
abort-job
-이 작업을 중단하고 동일한 대기열에서 다음 작업을 진행하십시오. -
retry-job
-N 초 동안 기다린 후이 작업을 다시 시도하십시오 (여기서 N은 cupsd.conf 의 “JobRetryInterval”지시문에 의해 결정됨). -
retry-this-job
-현재 작업을 즉시 그리고 무한정 재 시도하십시오. -
stop-printer
-현재 인쇄 대기열을 중지하고 향후 인쇄를 위해 작업을 유지하십시오. 위에서 언급 한 대안에 따라 달리 정의하지 않는 한 이것은 여전히 기본값입니다. 또한 이전 버전의 CUPS (질문에 따라 제거하려는 대기열)의 모든 대기열에 대해 기본 + 가능한 동작이었습니다.
또한 개별 ErrorPolicies를 각각의 개별 인쇄 대기열로 설정할 수 있습니다. 이 설정은 printers.conf 파일에 표시됩니다. 로 명령 줄에서 설정하십시오
lpadmin -p printername -o printer-error-policy=retry-this-job
. -
-
들어 CUPS 이전 버전의 나는 한 번 봐 가지고 권 해드립니다
beh
의 CUPS 백엔드 처리기를 .beh
모든 CUPS 백엔드에 적용 할 수있는 래퍼입니다.인쇄 대기열에 현재 백엔드가 정의
socket://192.168.1.111:9100
되어 있고 마음에 들지 않는 방식으로 작동 한다고 가정합니다 (네트워크 연결 문제로 인해 때때로 컵에 의해 비활성화 됨). 으로beh
당신은 것 같은 백엔드를 다시 정의 :beh:/0/20/120/socket://192.168.1.111:9100
이렇게하면 2 분 간격으로 20 번 작업을 재 시도하고 여전히 성공하지 못한 경우에만 대기열을 비활성화합니다. 또는 당신은 이것을 할 수 있습니다 :
beh:/1/3/5/socket://192.168.1.111:9100
이것은 시도 사이에 5 초 지연으로 작업을 3 번 재 시도합니다. 작업이 계속 실패하면 삭제되지만 큐는 비활성화되지 않습니다. cupsd가 무기한으로 장치에 연결하도록 하시겠습니까? 좋아, 이것을 시도하십시오 :
beh:/1/0/30/socket://192.168.1.111:9100
프린터가 다시 나타날 때까지 무한히 시도하십시오. 연결 시도 간격은 30 초입니다. 프린터가 꺼져도 작업이 손실되지 않습니다. 프린터를 끄면 의도적으로 인쇄를 지연시킬 수 있습니다. 데스크탑 프린터 및 / 또는 가정용 사용자에게 적합한 구성입니다.
전반적으로, bash는 스크립트, cron 작업과 주변 엉망 필요가 없습니다 lpadmin
, cupsenable
또는 sudo
재 활성화 CUPS 큐가 비정상적으로 추락하는 순서는.
답변
-E
사용 프린터 옵션은 lpadmin
그렇게해야합니다. lpadmin
명령을 사용하여 cron 작업을 작성할 수 있습니다 .
lpadmin [-U username ] [ -h server[:port] ] -p printer option(s)
시간별 cron
입장 :
0 * * * * /usr/sbin/lpadmin -p your_printer -E
다음을 실행하여 추가 할 수 있습니다.
sudo crontab -e
-E
프린터 이름 뒤에 lpadmin 옵션이 아니라 프린터 옵션이므로 이후에 프린터 이름 을 추가하십시오 . man lpadmin
아래 주석에서 지적한 페이지 에서 다음과 같은 발췌 내용을 참고하십시오 .
-d, -p 또는 -x 옵션 앞에 지정된 경우 -E 옵션은 서버에 연결할 때 암호화를 강제 실행합니다.
답변
내 프린터는 HP CP1215에도 오류가 있습니다. 프린터 일시 중지- “/ usr / lib / cups / backend / hp failed”
모두를 다시 시작한 후 cups
와 avahi-daemon
와와 프린터를 식별 lpstat -p
하고 함께있게 cupsenable
, 나는 다시 인쇄 할 수 있었다. 다시 시작 cups
하고 활성화하면 트릭이 수행되지 않았습니다.
또한 기본 정책을 재시도 작업으로 변경하고 결국 cronjob으로 오류를 피했습니다.
* * * * * lpstat -p |grep "poissa käytöstä" && service avahi-daemon restart; service cups restart; cupsenable HP_Tuloostin
여기서 poissa käytöstä
“순서가”유지 보수를위한 핀란드어 현지화 텍스트이며 HP_Tuloostin
내 프린터의 이름입니다.
내 경험상 기본 정책과 현재 프린터 정책을 모두 다시 시도하도록 구성해야합니다. 기본 정책은 새 프린터를 설치할 때 얻는 정책입니다.
답변
ls /etc/cups/ppd/ |cut -d "." -f1 |grep -v VMware |xargs -i cupsenable {}
여기에는 설치된 프린터를 나타내는 모든 ppd 파일이 나열되고, ppd 확장명을 차단하고, 많은 VMware 서버에 포함 된 VMware ppd를 무시하고 (제거 할 필요가없는 경우 |grep -v VMware
) 제거 하고 다른 이름을 xargs
모두 전달합니다. 프린터.
크론 작업은이 작업을 잘 수행해야합니다.
답변
GUI에 프린터를 다시 시작하기 위해 로그인이 필요하다는 사실에 문제가있는 경우 다른 해결책은 로그인없이 GUI를 통해 프린터를 다시 시작할 수 있도록하는 것입니다. 컵을 종료하고이 라인을 편집하려면 sudo vi /etc/cups/cupsd.conf
:
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel- Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
Resume-Printer
지시문을 제거한 다음 컵을 다시 시작하십시오. 지시문이 둘 이상의 <Limit>
섹션 에 나타나는 경우 관련 <Policy>
섹션에서 제거하거나 모두 제거 할 수 있습니다 . 이제 GUI에서 로그인하지 않고도 프린터를 다시 시작할 수 있습니다. 나는 macworld 에서 이것을 보았지만 모든 컵 설치에 적용됩니다.
답변
위의 Janne의 답변, 예를 들면 다음과 같습니다.
* * * * * lpstat -p |grep "poissa käytöstä" && service avahi-daemon restart; service cups restart; cupsenable HP_Tuloostin
… 프린터의 상태에 관계없이 1 분마다 CUPS가 다시 시작됩니다. 컵 재시작 절이 &&와 쌍을 이루지 않기 때문입니다.
다음은 장애 상태를 감지 할 때 CUPS를 다시 시작하는 데 사용하는 짧은 BASH 스크립트입니다.
#!/bin/bash
DATE=$(date)
DS40=$(/usr/bin/lpstat -p |grep "DS40" |grep "disabled")
if [ ! -z "${DS40}" ]; then
echo "${DATE} - Restarted avahi and cups" >> /var/log/cups/restart-cron-tim.log
/usr/sbin/service avahi-daemon restart
/usr/sbin/service cups restart
/usr/sbin/cupsenable Dai_Nippon_Printing_DS40
fi
“DS40″을 원하는 프린터로 바꾸고 사용하지 않는 언어의 lpstat -p 출력으로 “비활성화”하십시오.