Cronで文字化けの原因と解決方法
直でCommandを打って実行する時は文字化けしないのに、Cronで実行するとなぜか文字化けすることがありますよね。
逆にCronで実行する時は文字化けしないのに、直でCommandを打って実行するとなぜか文字化けすることがあります。
今回はCronで文字化けする原因とその対策を書いてみます。
原因
環境変数LANGの設定がズレているから。
解説
ユーザーの環境変数とCronの環境変数は別物です。
つまり、ユーザーの環境変数のLANGとCronの環境変数のLANGの指定が異なっている可能性があります。
例えば、AWSのAmazon Linux2 AMIのインスタンスではec2-userの環境変数のLANGは
に指定されていますが、Cronでは指定されていません。en_US.UTF-8
このLANGのズレにより、両方の実行結果が生じるわけです。
対策
Cronのタスク実行前に環境変数のLANGを指定してあげます。
例えば、AWSのAmazon Linux2 AMIだと
などでcron編集画面で下記のようにします。crontab -e
LANG=en_US.UTF-8;
0 0 * * * ~/foo.sh
0 0 * * * ~/bar.sh
もし、特定のタスクのみ適用したい場合は下記のようにします。
0 0 * * * export LANG=en_US.UTF-8; ~/foo.sh
0 0 * * * ~/bar.sh
ディスカッション
コメント一覧
まだ、コメントがありません