• ベストアンサー

cronでlpr(印刷)ができない

よろしくおねがいします。 自動でプリントアウトしたかったので cronを使おうとしましたがうまくいきませんでした。 (手動で)ターミナルで lpr を実行するとうまくいきます。 たとえば # lpr /home/ishii/file は印刷できます。一方で、 # crontab -l (抜粋) 15 * * * * lpr /home/ishii/file の場合は時間(毎時15分)になるとポップアップで 『"file"(プリンタ"printer")の印刷が中止されました。 原因は何か突き止めたいことでしょう"』 が表示され、印刷できません。 cron 自体は正常で他のコマンドならば動きます。 cronは正常、lprも正常、ふたつ一緒になるとダメという状態です。 どなたかご教授下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • dummyplug
  • ベストアンサー率58% (134/230)
回答No.3

>頭に MAILTO=ishii を加えても届きませんでした。 となると、cronのログを見ると実行しているようではありますし、リダイレクトで調べた件とあわせて考えても、lprは何も出力していない、と考えるのが妥当そうですね。 コマンドラインで試しているとき(うまく行っている時)に使っているシェルはbashとかのsh系ですか?もしそうなら、cronで起動する行を例えば source /home/ishii/.bashrc; lpr ... のようにして.bashrcを読み込んで(環境変数の設定などしてから)lprを実行するようにしてみてはどうでしょう。もしそれでうまくいくのなら.bashrcに書かれている何かの設定が効いているのだと推定できます。 csh系を使っているとかならcronで起動するのを/bin/csh -c ...みたいにしてcsh環境で実行させてみてはどうでしょう。その際、.cshrc(.tcshrc)が効くようにしないといけませんが。 あまりピリッとした答えを書けなくてすみません。

ooita-ken
質問者

補足

動きました!!ありがとうございます。 あきらめかけていただけに、本当にうれしいです。 しかし、cronの実行者は ishii であることは確認したのですが、 そのあたりはどうなんでしょうね。cron の実行プログラムの中に echo `whoami` > log をいれたらたしかにユーザは ishii でした。 ユーザが ishii だったので環境変数は同じだろうなあ、と思っていたのですが、見事それでした。 本当に、お世話になりました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • dummyplug
  • ベストアンサー率58% (134/230)
回答No.2

なんででしょうね。 crontabでMAILTO環境変数を設定しておくとコマンド実行時に標準出力(標準エラーもだったかな)に出た文字列がメールで届いたと思います。それを確認してみてはどうでしょう。あるいは、crontabに書くlprコマンドの出力を適当なファイルにリダイレクト("> /tmp/log 2>&1"みたいに)してもよいです。とにかく何かメッセージが出ていないか確認してはどうでしょう。 シェル上で実行したときはうまくいくということですから何か(.bashrcとか.cshrcとかで設定している)環境変数の値が設定されていないとかではないかなぁと考えています。

ooita-ken
質問者

補足

ご回答ありがとうございます。 MAILTO変数ですが、 $ crontab -e として、頭に MAILTO=ishii を加えても届きませんでした。少し、調べてから報告したいと思います。 リダイレクト( lpr FILE > /tmp/log 2>&1 ) してみると、/tmp/logの中味は空でした。 また、/etc/syslog.conf に lpr.* /var/log/lpr を加えても ログが残らなかったので、調べて報告したいと思います。 まったくすすんでいませんが、心当たりありましたらご教授下さい。 手も足もでない状態です。

すると、全ての回答が全文表示されます。
  • _himajin_
  • ベストアンサー率65% (128/195)
回答No.1

とりあえず /var/log/cron とか /var/log/lpr とかを確認されてはどうでしょう? # syslogに出力するよう設定されているのが前提ですが… たぶんないとは思いますが…# で書き始めてるのは su してるから、というわけではないんですよね? (もしその場合でもroot用のcrontabだろうから問題にはならないでしょうけど) あと、"printer"は正しいのでしょうか?正しくないなら -P オプションをつけてみるとか…環境変数PRINTERは引き継がれてないと思うので。

ooita-ken
質問者

補足

解答ありがとうございます。 /var/log/lpr はありませんでしたので、/var/log/cron は $ tail /var/log/cron (抜粋) May 25 15:05:01 localhost crond[17697]: (ishii) CMD (lpr -Plp9400 /home/ishii/wadaruby/denbun/stamp) となっており、 CMDが何を意味するかわかりませんが通常の cron が成功したときと同じですので、cron そのものは問題ないようにみえます。 (/home/ishii/wadaruby/denbun/stampが印刷しようとしたファイルです) #については、こちらのミスで正しくは $ でプロンプトのつもりでかきました。実行しているのは、一般ユーザ(ishii)です。 プリンタ名を"printer"から"lp9400" にかえてみましたがうまくいかず同様の結果でした("printer"から"lp9400"にかわりました) 『"stamp"(プリンタ"lp9400")の印刷が中止されました。 原因は何か突き止めたいことでしょう"』 lp -d lp9400 /home/ishii/wadaruby/denbun/stamp としてもダメでした。 よろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A