명령 행에서 CUPS 프린터를 다시 시작하는 방법?


42

CUPS에는 때때로 드라이버 문제 (HP 1010)로 인해 일시 중지되는 프린터가 있습니다.

CUPS에서 프린터를 재개하기 위해 시간당 한 번 실행되는 쉘 스크립트를 작성하고 싶습니다. 그러나 몇 분 동안 인터넷 검색을 한 후 셸 명령 줄에서 프린터를 다시 시작하는 방법을 모릅니다.


원인 : WiFi 프린터의 전원이 꺼지면 Enabled 플래그가 지워진 것 같습니다. 프린터 전원을 다시 켜도 Enabled 플래그는 확인 상태로 복원되지 않습니다. .. --- 작업이 인쇄 대기열에 쌓입니다. 오류 메시지는 "필터 실패"입니다. 프린터 설정에서이 확인란을 선택하면 프린터가 다시 인쇄를 시작합니다.
타원형보기

답변:


66

컵에 넣을 수있는 명령이 있습니다.

cupsenable printer

비활성화 된 프린터를 시작합니다 ( lpstat -p또는 프린터로 프린터를 나열 할 수있는 프린터 이름 찾기 lpc status).

루트 또는 sudo를 통해 명령을 실행해야 할 수도 있습니다. 따라서 쉘 스크립트에서 프린터를 활성화해야한다면, 쉘을 루트의 크론 탭에 추가하거나 sudoers 파일을 편집해야합니다.


1
+1이 답변은 "overbloated cups 구성 사용"( superuser.com/a/280400/160771 에서와 비교)과 대조적으로 실제로 도움이되었습니다. 또한 영업 이익은 명령 줄 알고 싶어하기 때문에, 점에 더
humanityANDpeace

25

실행중인 CUPS 버전에 따라 다른 방식으로 문제를 해결할 수 있습니다.

  1. 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.

  2. 들어 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 큐가 비정상적으로 추락하는 순서는.


최신 버전의 CUPS에 대한 재시도 간격을 어떻게 설정할 수 있습니까?
Sepero

@Sepero : 예. 예를 들어 JobRetryInterval 5858 초마다 시도해 볼 수 있습니다 . 다른 가능한 값은 1w(1 주), 3d(3 일), 7h(7 시간) 또는 4m(4 분)입니다.
Kurt Pfeifle

@Sepero : CUPS v1.7까지 가능한 모든cupsd.conf 매개 변수는 http://www.cups.org/documentation.php/doc-1.7/ref-cupsd-conf.html에 문서화되어 있습니다 . 페이지의 오른쪽 가장자리에있는 각 매개 변수의 주석을 확인하십시오.이를 지원하는 첫 번째 CUPS 릴리스가 표시됩니다. 더 유용한 매개 변수에 대한 행복한 발견! :-)
Kurt Pfeifle

8

-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 옵션은 서버에 연결할 때 암호화를 강제 실행합니다.


2
이것은 잘못이다. 이 컨텍스트에서 -E는 프린터 옵션이며 프린터 이름 뒤에 가야합니다. 그렇지 않으면 통신 암호화 만 설정합니다. developer.apple.com/library/mac/documentation/Darwin/Reference/…--d , -p 또는 -x 옵션 전에 지정하면 -E 옵션은 서버에 연결할 때 암호화를 강제 실행합니다.
scragar

이것은 나를 위해 작동하는 유일한 솔루션입니다. 컵으로 인해 프린터가 자주 멈추지 않습니다. 는 error-policy아무것도 해결되지 않습니다. cupsenable아무것도 고치지 않습니다. 나만 해 lpadmin.
λuser

6

내 프린터는 HP CP1215에도 오류가 있습니다. 프린터 일시 중지- "/ usr / lib / cups / backend / hp failed"

모두를 다시 시작한 후 cupsavahi-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내 프린터의 이름입니다.

내 경험상 기본 정책과 현재 프린터 정책을 모두 다시 시도하도록 구성해야합니다. 기본 정책은 새 프린터를 설치할 때 얻는 정책입니다.


2
ls /etc/cups/ppd/ |cut -d "." -f1 |grep -v VMware |xargs -i cupsenable {}

여기에는 설치된 프린터를 나타내는 모든 ppd 파일이 나열되고, ppd 확장명을 차단하고, 많은 VMware 서버에 포함 된 VMware ppd를 무시하고 (제거 할 필요가없는 경우 |grep -v VMware) 제거 하고 다른 이름을 xargs모두 전달합니다. 프린터.

크론 작업은이 작업을 잘 수행해야합니다.


1

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 에서 이것을 보았지만 모든 컵 설치에 적용됩니다.


1

위의 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 출력으로 "비활성화"하십시오.


0

cupsd.conf를 다음 줄로 업데이트했습니다.

ErrorPolicy 중단 작업

그런 다음 /etc/init.d/cups restart를 사용하여 cupsd를 다시 시작했습니다.

그러나 printers.conf 파일을 보면 ErrorPolicy가 업데이트되지 않습니다. 컵 설명서에 따르면 "ErrorPolicy abort-job"행이 프린터 섹션에 나타나야합니다.

또한 lpadmin으로 ErrorPolicy를 업데이트하려고 시도했습니다. 아무것도 ErrorPolicy를 변경하지 않거나 printers.conf 파일로 만들지 않습니다.

내가 무엇을 놓치고 있습니까? cupsd가 실제로 오류로 작업을 중단하도록하려면 어떻게해야합니까?


printers.conf 편집
KawaiKx 2016 년

0

lpadmin -p p-go-avtom2 -v p-go-avtom2 -E

출처


5
이것이 무엇을하는지 정확히 설명해 주시겠습니까? 좀 더 컨텍스트를 추가하십시오.
slhck

0

여기에 많은 솔루션이 작동하지 않았습니다 (예 : 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 프린터의 전원이 꺼져 있고 정책이 "프린터 중지"인 경우 인쇄 할 수없고 프린터를 사용할 수 없다는 메시지가 표시됩니다 (사용 안함) . 정책이 "작업 다시 시도"로 설정된 경우에만 사용을 선택 취소하지 않습니다. 프린터 전원이 켜진 후 몇 분 후에 작업이 인쇄되기 시작합니다.

( 이것에 대한 나의 다른 게시물.)


0

여기에 동일한 CUPS 넌센스를 처리해야했습니다 ... 솔루션은 n 분마다 실행되는 시스템화 된 스크립트였습니다.

/usr/local/cups/enable_cups_printers.sh

#!/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

cups.enable.printers.service

[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

cups.enable.printers.timer

[Unit]
Description=Run enable printers frequently to ensure connection difficulties are remedied.

[Timer]
OnBootSec=15min
OnUnitActiveSec=300

[Install]
WantedBy = timers.target

-1

다른 사람들이 이미 말했듯이 'cupsenable'또는 'lpadmin -E'가 트릭을 수행해야합니다.

관련된 문제는 IIRC이며 기본적으로 CUPS는 프린터가 작업을 인쇄하는 데 실패하면 프린터가 비활성화되도록 프린터를 구성합니다. 대신 작업을 중단하도록 변경할 수 있습니다.


-E는 암호화 용이므로 -1입니다.
타원형보기 1

위의 다른 답변에서 -E를 lpadmin 옵션이 아닌 프린터 옵션으로 올바르게 사용하는 방법을 참조하십시오.
타원형보기
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.