背景:
因最近试安装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)
因最近试安装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)