cron落とし穴 - 解決編
あの後人間椅子のライブに行ったり旅行に行ったり仕事が忙しくなったりですっかり間があいてしもうた。
御久しぶりです血まみれです。
以下解決編。
こたえ「とりあえずLANG設定をrootとあわせとけ」
- なんで
→cronユーザの環境変数を確認してみるとLANGが見当たらない(この場合LANG=Cが設定される)、もしくはroot実行時のものと違う。
→OS(実行ユーザ)の環境変数設定はJavaやDBクライアントにも影響がでる。
→これらは実行ユーザがどんなロケールで動かしているのかをLANGで判断している
→たとえば通貨計算や日付の書式はモロこれの影響を受ける。
- どうやってなおすの
- crontabに直接書く(めんどくさい人用)
※ここにかいちゃうとcron実行タスクのすべてでLANG=ja_JP.UTF-8が使用される。
-
- 実行したいタスク内に書く(安心安全)
※そのコマンドやシェル内でしかLANGが適用されない=ほかへの影響は少ない。