アプリ版:「スタンプのみでお礼する」機能のリリースについて

よろしくおねがいします。

自動でプリントアウトしたかったので
cronを使おうとしましたがうまくいきませんでした。
(手動で)ターミナルで lpr を実行するとうまくいきます。

たとえば

# lpr /home/ishii/file

は印刷できます。一方で、

# crontab -l (抜粋)
15 * * * * lpr /home/ishii/file

の場合は時間(毎時15分)になるとポップアップで

『"file"(プリンタ"printer")の印刷が中止されました。
原因は何か突き止めたいことでしょう"』

が表示され、印刷できません。

cron 自体は正常で他のコマンドならば動きます。
cronは正常、lprも正常、ふたつ一緒になるとダメという状態です。

どなたかご教授下さい。

A 回答 (3件)

>頭に MAILTO=ishii を加えても届きませんでした。


となると、cronのログを見ると実行しているようではありますし、リダイレクトで調べた件とあわせて考えても、lprは何も出力していない、と考えるのが妥当そうですね。

コマンドラインで試しているとき(うまく行っている時)に使っているシェルはbashとかのsh系ですか?もしそうなら、cronで起動する行を例えば
source /home/ishii/.bashrc; lpr ...
のようにして.bashrcを読み込んで(環境変数の設定などしてから)lprを実行するようにしてみてはどうでしょう。もしそれでうまくいくのなら.bashrcに書かれている何かの設定が効いているのだと推定できます。

csh系を使っているとかならcronで起動するのを/bin/csh -c ...みたいにしてcsh環境で実行させてみてはどうでしょう。その際、.cshrc(.tcshrc)が効くようにしないといけませんが。

あまりピリッとした答えを書けなくてすみません。

この回答への補足

動きました!!ありがとうございます。
あきらめかけていただけに、本当にうれしいです。

しかし、cronの実行者は ishii であることは確認したのですが、
そのあたりはどうなんでしょうね。cron の実行プログラムの中に
echo `whoami` > log をいれたらたしかにユーザは ishii でした。

ユーザが ishii だったので環境変数は同じだろうなあ、と思っていたのですが、見事それでした。

本当に、お世話になりました。

補足日時:2008/05/26 17:28
    • good
    • 0

なんででしょうね。



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

シェル上で実行したときはうまくいくということですから何か(.bashrcとか.cshrcとかで設定している)環境変数の値が設定されていないとかではないかなぁと考えています。

この回答への補足

ご回答ありがとうございます。

MAILTO変数ですが、
$ crontab -e
として、頭に MAILTO=ishii を加えても届きませんでした。少し、調べてから報告したいと思います。

リダイレクト( lpr FILE > /tmp/log 2>&1 ) してみると、/tmp/logの中味は空でした。

また、/etc/syslog.conf に lpr.* /var/log/lpr を加えても ログが残らなかったので、調べて報告したいと思います。

まったくすすんでいませんが、心当たりありましたらご教授下さい。
手も足もでない状態です。

補足日時:2008/05/25 18:43
    • good
    • 0

とりあえず /var/log/cron とか /var/log/lpr とかを確認されてはどうでしょう?


# syslogに出力するよう設定されているのが前提ですが…

たぶんないとは思いますが…# で書き始めてるのは su してるから、というわけではないんですよね?
(もしその場合でもroot用のcrontabだろうから問題にはならないでしょうけど)

あと、"printer"は正しいのでしょうか?正しくないなら -P オプションをつけてみるとか…環境変数PRINTERは引き継がれてないと思うので。

この回答への補足

解答ありがとうございます。

/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
としてもダメでした。

よろしくお願いします。

補足日時:2008/05/25 15:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!