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

LANG="ja_JP.UTF-8"設定がサーバ再起動時正しく反映されない・・・

Linux環境変数LANGをLANG="ja_JP.UTF-8"に設定したにも関わらず
Linnxサーバを再起動するとLANGが「en_US.UTF-8」になってしまいます。
これはなぜでしょうか

環境はLinux Redhat5

環境変数をファイル内で設定するには,「/etc/profile」,「~/.bash_profile」,
「~/.bashrc」の3つがあると思いますが、これらのファイルにはLANG設定がありません。

/etc/sysconfig/i18nと/etc/sysconfig/auditdに以下のLANG設定がありました。

# cat /etc/sysconfig/i18n
LANG="ja_JP.UTF-8"

# grep LANG /etc/sysconfig/*
/etc/sysconfig/auditd:# AUDITD_LANG to the empty string or the string "none".
/etc/sysconfig/auditd:AUDITD_LANG="en_US"
/etc/sysconfig/httpd:# change the locale in which the server runs, the HTTPD_LANG
/etc/sysconfig/httpd:#HTTPD_LANG=C
/etc/sysconfig/i18n:LANG="ja_JP.UTF-8"

以上

A 回答 (2件)

>サーバ再起動時にTomcatが自動起動するので、Tomcatのstartup.shにサーバ再起動時のLANGを内容をファイルに吐き出すようにしています。



startup.shについてはよく判りませんが…
ps auxでサーバ起動時に起動したままのプロセスを探して、
/proc/PID/environ
を見ると…LANG=en_US.UTF-8ですね。

>/etc/profile.d/lang.shも確認したんですが、特に原因を確定できませんでした。

44行目でシェル変数CONSOLETYPEをシェル変数consoletypeに入れています。
続くif文で、シェル変数consoletypeの長さを調べて、0だった場合に
/sbin/consoletype stdout
の結果を入れています。
# 起動中だと、この結果は"vt"になる…のでしょう。
で、66行目からの処理でen_US.UTF-8に設定している…のかと。
# その後で、サービスの起動スクリプトが走っている…のか?

>sshでログインしてTomcatを再起動するとLANGがLANG="ja_JP.UTF-8"に変換しています。

/sbin/consoletype stdoutがptyですから…書き換えたりすることはないのでしょう。

/etc/sysconfig/i18nに
CONSOLETYPE=pty
を書き加えてからリブートしてみたらどうなりますかね?
……こんなんなりました↓(ちなみにPID=1673はsyslogdです)

[root@localhost ~]# cat /proc/1673/environ
CONSOLE=/dev/consoleSELINUX_INIT=YESTERM=linuxINIT_VERSION=sysvinit-2.86PATH=/sbin:/usr/sbin:/bin:/usr/binrunlevel=3RUNLEVEL=3PWD=/LANG=ja_JP.UTF-8previous=NPREVLEVEL=NSHLVL=3HOME=/_=/sbin/syslogd[root@localhost ~]#

ところで…en_US.UTF-8だと何か問題ありますか?
    • good
    • 0

>Linnxサーバを再起動するとLANGが「en_US.UTF-8」になってしまいます。



どこで見ています?
GNOMEの端末エミュレータですか?
sshやTELNETなどのネットワーク越しですか?
コンソールからですか?

コンソールからログインすると、/etc/sysconfig/i18n で
LANG="ja_JP.UTF-8" としていても、en_US.UTF-8になります。
# コンソールでは日本語表示できませんし。
/etc/profile.d/lang.sh
で、それらしい設定を行っている部分があります。
当方、CentOS5.5ですが、
/etc/profile.d/lang.sh の66行目からの処理で、コンソールのタイプで判定してLANGを上書き処理しています。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
サーバ再起動後の確認はシェールを作って、
サーバ再起動時にTomcatが自動起動するので、Tomcatのstartup.shにサーバ再起動時のLANGを内容をファイルに吐き出すようにしています。

/etc/profile.d/lang.shも確認したんですが、特に原因を確定できませんでした。

sshでログインしてTomcatを再起動するとLANGがLANG="ja_JP.UTF-8"に変換しています。

現時点では
根本的な対策ではないですが、
サーバ再起動時にTomcatが再起動されるので、Tomcatのstartup.shにLANG="ja_JP.UTF-8"を追加して対応する予定です。

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

お礼日時:2010/10/07 15:00

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