背景:
因最近試安裝Linux下的jira,有一個中文外掛程式安裝後,一旦設定開機啟動後,它是英文,而在終端再重新啟動一次後呢,似乎外掛程式生效,它又恢複為正常中文介面,我首先想這這涉及到一個環境變數的問題,因為在我設定開機啟動的服務時用service jira start出現找不到一些變數,如:擷取不到java的home目錄,提示找不到,為此,我加上了java的環境變數開機啟動Ok了,但是英文,我對英文認識少,但還是想用中文,否則外掛程式就等於白安了。
為此,需要弄清這兩者的環境變數的區別在哪兒,如何查看一個運行程式的環境變數如下兩種方法:
方法一:通過擷取進程編號得到環境變數:
root@192.168.98.128:~# ps aux|grep jira
root 2341 25.3 55.0 758544 384956 pts/0
得到PID為:2341
查看該進程的環境變數命令如下:
ps eww -p 2341 //得到一大串的環境變數
方法二,查看proc目錄下的環境資訊並分離出環境變數
tr '\0' '\n' < /proc/2341/environ
經diff區分發現後得出有兩個點不同:
(1)TERM=linux TERM=xterm //這個可能是我在用SecureCRT時設定的是xterm設定時把這個變數帶入進去了(在:會話選項->終端->模擬->終端:xterm)
(2)LANG=en_US.UTF-8 LANG=zh_CN.UTF-8 //這兒是一個終端編碼的問題:en_US 和 zh_CN還是有區別的,這兒有可能就是問題所在。
關於LANG的問題,參考我寫的:http://www.justwinit.cn/post/5425/
現在這樣處理:
export LANG=zh_CN.UTF-8
把這一行放在: /etc/init.d/jira 這個啟動的命令前一行即可。
export LANG=zh_CN.UTF-8
nohup /usr/local/jira/bin/shutdown.sh > /dev/null 2>&1 & |~
26 usleep 100000 |~
27 nohup /usr/local/jira/bin/startup.sh > /dev/null 2>&1 &
經過上述修改後,果然成功,大功告成,猜想正確,得證。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
附錄疑問:nohup執行的shell指令碼,剛設定的全域變數不能傳遞到指令碼中使用嗎?
export LOGFILE #這裡要匯出為環境變數才能被123.sh進程使用
nohup 123.sh &
================================================
當然也可以不必export,只要source 指令碼就行了,全域變數就被設定到當前shell進程裡了,如果希望它成為環境變數以便被之後的shell子進程使用就要export了。
我在思考:為何這個jira啟動時沒有去讀這個檔案的值呢?奇怪,難道是自己的jira版本太低了麼。
vi /etc/sysconfig/i18n
通過開機啟動和終端運行時的環境變數的不同,進而匹配成相同,這個問題及得到瞭解決。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面附加:開機啟動後的環境變數情況和終端啟動的環境變數區別產生的原因:
首先清楚在linux裡面無論是在命令列輸入還是系統設定等都是屬於shell。(開機啟動設定在(/etc/init.d/rcS中)、配置系統內容變數的shell位於/etc/profile、配置使用者級環境變數的shell為~/.bashrc—每次啟動終端都執行;或~/.bash_profile—會話開始時執行)。把庫的路徑添加到環境變數LD_LIB_PATH中即可找到。
備忘:
1、 在命令列編輯時可用emacs的命令進行編輯,如ctrl-b表示退後一步;ctrl-a表示游標移到最前等。
2、 可以同時輸入幾個命令順序執行:command1 ; command2 或 command1 && command2(當command1執行成功時再執行command2)。
3、 後台運行和程式debug輸出重新導向: 在終端運行一個程式後可以用ctrl-z掛起然後輸入bg命令使其後台運行(當然也可直接在後面加&)。Command & > /dev/null &將不會再終端輸出調試資訊。
4、 輸出重新導向: (1)多個命令重新導向,| 如 | grep text | less等,(2)重新導向至檔案 command > file(把file檔案內容換成command的輸出) 或 command >> file(直接把command的輸出加在file檔案後面)。
5、 改變提示符: 通過設定PS1=”something。
6、 用alias newcommand=”oldcommand”設定命令的別名。
1.2. 6410開機啟動和環境變數設定
1、 開機啟動程式加在shell檔案/etc/init.d/rcS檔案中
2、 環境變數添加在/etc/profile檔案(PATH和LD_LIBRARY_PATH)