2010-03-03 13:25:43 +0000 2010-03-03 13:25:43 +0000
47
47
Advertisement

コマンドラインからCUPSプリンタを再開するには?

Advertisement

CUPSにプリンタがあるのですが、ドライバの問題(HP 1010)で時々一時停止になってしまいます。

CUPSのプリンタを再開するために、1時間に1回実行されるシェルスクリプトを書きたいと思っています。しかし、シェルコマンドラインからプリンタを再開させる方法が、数分間ググってみてもさっぱりわからない。

Advertisement

回答 (9)

68
68
68
2010-03-03 16:36:51 +0000

cupsenable コマンドがあります。

cupsenable printer

無効なプリンタを起動します (プリンタ名を調べるには、lpstat -p または lpc status でプリンタをリストアップします)。

コマンドを root で実行するか、sudo で実行する必要があるかもしれません。そのため、シェルスクリプトでプリンタを有効にする必要がある場合は、rootのcrontabにシェルを追加するか、sudoersファイルを編集する必要があります。

6
6
6
2012-10-10 07:42:50 +0000

私のプリンターはHP CP1215ですが、これもエラーが出ていました。Printer Paused - “/usr/lib/cups/backend/hp failed” ](https://bbs.archlinux.org/viewtopic.php?id=85454)

cupsavahi-daemonの両方を再起動して、lpstat -pでプリンタを識別し、cupsenableで有効化すると、再び印刷できました。cupspoissa käytöstäの両方を再起動し、HP_Tuloostinでプリンタを識別して0x6&で有効化すると、再び印刷できました。

* * * * * lpstat -p |grep "poissa käytöstä" && service avahi-daemon restart; service cups restart; cupsenable HP_Tuloostin

ここで0x6&はフィンランド語のローカライズテキストでメンテナンスの “out of order"、0x6&はプリンタ名です。

私の経験では、デフォルトポリシーと現在のプリンタポリシーの両方を再試行ジョブに設定する必要があります。デフォルトポリシーは、新しいプリンタをインストールするときに取得するポリシーに過ぎません。

2
Advertisement
2
2
2014-01-27 18:33:06 +0000
ls /etc/cups/ppd/ |cut -d "." -f1 |grep -v VMware |xargs -i cupsenable {}

これは、インストールされているプリンタを表すすべてのppdファイルをリストアップし、ppdの拡張子をカットし、多くのVMwareサーバに含まれているVMware ppdを無視し(これが必要ない場合は|grep -v VMwareを削除します)、他の名前をxargsに渡して、すべてのプリンタをアンパッシブにします。

cron ジョブでうまく動作するはずです。

1
1
1
2015-08-25 10:30:16 +0000

問題が 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 ディレクティブを削除してから cups を再起動します。ディレクティブが複数の <Limit> セクションに表示されている場合は、該当する <Policy> セクションから削除するか、すべての 0x6& セクションから削除してください。これでGUIからログインせずにプリンタを再開できるようになりました。これは macworld で見ましたが、すべての cups インストールに適用されます。

1
Advertisement
1
1
2015-09-07 12:14:32 +0000

上のJanneさんの回答、例えばこれ。

* * * * * lpstat -p |grep "poissa käytöstä" && service avahi-daemon restart; service cups restart; cupsenable HP_Tuloostin

…を実行すると、どのプリンタがどのような状態にあるかに関わらず、1分ごとにCUPSが再起動されます。これは、CUPS restart 節が && とペアになっていないからです。

以下は、障害状態の検出を条件に 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 "を状態を知りたいプリンタに、"disabled "をあなたの言語で出力するlpstat -pに置き換えてください。

0
0
0
2016-10-08 23:57:22 +0000

ここにある解決策の多くは、私にはうまくいきませんでした (例: 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.

Ubuntu 16.04の場合:

Click System Settings | Printers,
Then Server | Settings,
Click the blue "Problems?" link.

これで印刷トラブルシューターが開きます。次に何をすべきかを教えてくれます。

0x1&

おそらく、印刷設定でCUPSプリンタのEnabledプロパティをチェックする必要があるでしょう。(最初にロックを解除する必要があります)。

最後に、この問題が再発しないようにするために、上記のプリンタ設定でプリンタの「ポリシー」を「リトライジョブ」に変更してください(「プロパティ」→「ポリシー」)。

これで解決しました。

この問題の原因: CUPS PRINTERに印刷するときにwifiプリンターの電源が落ちていて、ポリシーが「プリンターを停止」になっていると、印刷できなかったというメッセージが出て、プリンターが無効になっています(有効はチェックを外しています)。ポリシーが「ジョブを再試行する」に設定されている場合のみ、Enabledのチェックが外されません。プリンタの電源が回復してから数分後にジョブが印刷されるようになります。

(これについては私の 他の の記事を参照してください)

0
Advertisement
0
0
2018-11-03 18:15:11 +0000

ここでも同じようなCUPSの無意味な処理をしなければならなかった…。解決策は、n分毎に実行されるsystemdスクリプトだった。

/usr/local/cups/enable_cups_printers.sh

#!/bin/sh
for printer in $(lpstat -v | perl -pe 's/device for ([A-Za-z0-9_]+):.*//g')
do
    echo "Forcely enabling printer: $printer"
    # Enable:-E PrinterId:-p
    /usr/bin/lpadmin -E -p "$printer"
done

cups.enable.printerers.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.printerers.timer

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

[Timer]
OnBootSec=15min
OnUnitActiveSec=300

[Install]
WantedBy = timers.target
0
0
0
2012-02-13 10:28:39 +0000

lpadmin -p p-go-avtom2 -v p-go-avtom2 -E ソース

-1
Advertisement
-1
-1
2010-04-12 11:16:08 +0000

他の人が既に言っているように、'cupsenable'か'lpadmin -E'でうまくいくはずです。

関連する問題として、CUPS はデフォルトでプリンタを設定していて、ジョブの印刷に失敗した場合、プリンタが無効になるように設定しています。これを変更して、代わりにジョブを中止させることができます。

Advertisement