mailxを使用して電子メールを送信するbashスクリプトがあります。メールボックス設定は.mailrcにあります。私はルートとしてそれを実行しています:bash - cronでスクリプトを実行しているときに "無効または不完全なマルチバイトまたはワイド文字"
linux:~ # ./lprojekt.sh
Resolving host smtp.gmail.com . . . done.
Connecting to 173.194.70.109 . . . connected.
220 mx.google.com ESMTP n20sm30980415wiw.5
>>> EHLO linux.site
250-mx.google.com at your service, [95.49.133.188]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250 ENHANCEDSTATUSCODES
>>> STARTTLS
220 2.0.0 Ready to start TLS
>>> EHLO linux.site
250-mx.google.com at your service, [95.49.133.188]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH
250 ENHANCEDSTATUSCODES
>>> AUTH LOGIN
334 VXNlcm5hbWU6
>>> bG1mYnlkYjlAZ21haWwuY29t
334 UGFzc3dvcmQ6
>>> cHJvamVrdDEyMz==
235 2.7.0 Accepted
>>> MAIL FROM: <[email protected]>
250 2.1.0 OK n20sm30980415wiw.5
>>> RCPT TO: <[email protected]>
250 2.1.5 OK n20sm30980415wiw.5
>>> DATA
354 Go ahead n20sm30980415wiw.5
>>> .
250 2.0.0 OK 1335692819 n20sm30980415wiw.5
>>> QUIT
221 2.0.0 closing connection n20sm30980415wiw.5
ご覧のとおり、正しく動作します。
しかし、このスクリプトをcronで実行しようとすると問題が発生します。
は、ここに私の/ etc/crontabの内容です:
SHELL=/bin/bash
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
HOME=/root
#
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
-*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null
* * * * * root /root/lprojekt.sh >> /root/Desktop/log.txt
各分には、(それが今ちょうどデバッグのためです)、rootユーザーがメールを取得:
Message 40:
From [email protected] Sun Apr 29 13:50:01 2012
X-Original-To: root
Delivered-To: [email protected]
From: [email protected]
To: [email protected]
Subject: Cron <[email protected]> /root/lprojekt.sh >> /root/Desktop/log.txt
X-Cron-Env: <SHELL=/bin/bash>
X-Cron-Env: <PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin>
X-Cron-Env: <MAILTO=root>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Date: Sun, 29 Apr 2012 13:50:01 +0200 (CEST)
Invalid or incomplete multibyte or wide character
. . . message not sent.
この問題の理由は何ですか?それを解決するには?事前におかげで助けてください。
スクリプトに 'locale'コマンドの呼び出しを挿入し、ターミナルとcronから実行したときの出力を比較します。ロケール出力の –
1行が異なっている: のcron: LC_TYPE = "POSIX" マニュアルでは、実行します。 LC_TYPE = pl_PL.UTF-8 cronのためLC_TYPEを設定する方法は? –
LC_CTYPEではなくLC_TYPEですか?後者は正しいスペルでなければなりません。ロケール変数POSIXまたはpl_PL.UTF-8の他の値は何ですか? SHELLなどと同様に、crontabファイルに直接環境変数を設定することができます.LC_CTYPEおよび/またはLC_ALLおよび/またはLANGをpl_PL.UTF-8に設定してみてください。あるいは、スクリプトやそれが使用するデータファイルから非ASCII文字を見つけて削除することもできます。 –