CUPS에는 때때로 드라이버 문제 (HP 1010)로 인해 일시 중지되는 프린터가 있습니다.
CUPS에서 프린터를 재개하기 위해 시간당 한 번 실행되는 쉘 스크립트를 작성하고 싶습니다. 그러나 몇 분 동안 인터넷 검색을 한 후 셸 명령 줄에서 프린터를 다시 시작하는 방법을 모릅니다.
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 큐가 비정상적으로 추락하는 순서는.
JobRetryInterval 58
58 초마다 시도해 볼 수 있습니다 . 다른 가능한 값은 1w
(1 주), 3d
(3 일), 7h
(7 시간) 또는 4m
(4 분)입니다.
cupsd.conf
매개 변수는 http://www.cups.org/documentation.php/doc-1.7/ref-cupsd-conf.html에 문서화되어 있습니다 . 페이지의 오른쪽 가장자리에있는 각 매개 변수의 주석을 확인하십시오.이를 지원하는 첫 번째 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 옵션은 서버에 연결할 때 암호화를 강제 실행합니다.
error-policy
아무것도 해결되지 않습니다. cupsenable
아무것도 고치지 않습니다. 나만 해 lpadmin
.
내 프린터는 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
내 프린터의 이름입니다.
내 경험상 기본 정책과 현재 프린터 정책을 모두 다시 시도하도록 구성해야합니다. 기본 정책은 새 프린터를 설치할 때 얻는 정책입니다.
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 출력으로 "비활성화"하십시오.
cupsd.conf를 다음 줄로 업데이트했습니다.
ErrorPolicy 중단 작업
그런 다음 /etc/init.d/cups restart를 사용하여 cupsd를 다시 시작했습니다.
그러나 printers.conf 파일을 보면 ErrorPolicy가 업데이트되지 않습니다. 컵 설명서에 따르면 "ErrorPolicy abort-job"행이 프린터 섹션에 나타나야합니다.
또한 lpadmin으로 ErrorPolicy를 업데이트하려고 시도했습니다. 아무것도 ErrorPolicy를 변경하지 않거나 printers.conf 파일로 만들지 않습니다.
내가 무엇을 놓치고 있습니까? cupsd가 실제로 오류로 작업을 중단하도록하려면 어떻게해야합니까?
여기에 많은 솔루션이 작동하지 않았습니다 (예 : sudo cupsenable 및 lpadmin -E).
Debian 8.6을 사용하는 경우 Cinnamon 2.2.16 (Linux)은 GUI 시작 메뉴에서이를 수행하십시오.
Click Administration | Print Settings,
Then select your stalled CUPS printer,
Click Unlock (and give it your admin password),
Click Server | Settings,
In this click the blue "Problems?" link.
를 들어 우분투 16.04 :
Click System Settings | Printers,
Then Server | Settings,
Click the blue "Problems?" link.
인쇄 문제 해결사가 열립니다. 다음에 무엇을해야하는지 알려줄 것입니다.
아마도 인쇄 설정에서 CUPS 프린터의 사용 속성을 확인하면됩니다. (먼저 잠금을 해제해야합니다).
마지막으로,이 문제가 다시 발생하지 않도록하려면 위에서 언급 한 프린터 설정 (속성 | 정책)에서 프린터 "정책"을 "재시도"로 변경하십시오.
나를 위해 고쳤다!
이 문제의 원인 : CUPS PRINTER로 인쇄 할 때 Wi-Fi 프린터의 전원이 꺼져 있고 정책이 "프린터 중지"인 경우 인쇄 할 수없고 프린터를 사용할 수 없다는 메시지가 표시됩니다 (사용 안함) . 정책이 "작업 다시 시도"로 설정된 경우에만 사용을 선택 취소하지 않습니다. 프린터 전원이 켜진 후 몇 분 후에 작업이 인쇄되기 시작합니다.
( 이것에 대한 나의 다른 게시물.)
여기에 동일한 CUPS 넌센스를 처리해야했습니다 ... 솔루션은 n 분마다 실행되는 시스템화 된 스크립트였습니다.
#!/bin/sh
for printer in $(lpstat -v | perl -pe 's/device for ([A-Za-z0-9_]+):.*/\1/g')
do
echo "Forcely enabling printer: $printer"
# Enable:-E PrinterId:-p
/usr/bin/lpadmin -E -p "$printer"
done
[Unit]
Description = Forcely enable printer occassionally. Why CUPS disables printers in the first place has yet to be determined.
[Service]
Type = simple
ExecStart = /usr/local/cups/enable_cups_printers.sh
[Install]
WantedBy = multi-user.wants
[Unit]
Description=Run enable printers frequently to ensure connection difficulties are remedied.
[Timer]
OnBootSec=15min
OnUnitActiveSec=300
[Install]
WantedBy = timers.target