Linux下查看进程(程序)启动时的环境变量

背景:
      因最近试安装Linux下的jira,有一个中文插件安装后,一旦设置开机启动后,它是英文,而在终端再重新启动一次后呢,似乎插件生效,它又恢复为正常中文界面,我首先想这这涉及到一个环境变量的问题,因为在我设置开机启动的服务时用service jira start出现找不到一些变量,如:获取不到java的home目录,提示找不到,为此,我加上了java的环境变量开机启动Ok了,但是英文,我对英文认识少,但还是想用中文,否则插件就等于白安了。

为此,需要弄清这两者的环境变量的区别在哪儿,如何查看一个运行程序的环境变量如下两种方法:

方法一:通过获取进程编号得到环境变量:
[email protected]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还是有区别的,这儿有可能就是问题所在。

现在这样处理:
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) 
时间: 2024-12-29 06:51:58

Linux下查看进程(程序)启动时的环境变量的相关文章

linux下查看进程路径

在linux下查看进程大家都会想到用 ps -ef|grep XXX可是看到的不是全路径,怎么看全路径呢?每个进程启动之后在 /proc下面有一个于pid对应的路径例如:ps -ef|grep python显示:oracle    4431  4366  0 18:56 pts/2    00:00:00 python Server.py4431就是进程号到/proc/4431下,ls -l 会看到:总用量 0-r--r--r--    1 oracle   oinstall        0

linux下查看进程占用端口和端口占用进程命令

Linux下查看进程占用端口: 查看程序对应进程号:ps –ef|grep 进程名 REDHAT :查看进程号所占用的端口号:netstat –nltp|grep 进程号 ubuntu:查看进程占用端口号:netstat -anp|grep pid Linux下查看端口号所使用的进程号: 使用lsof命令: lsof –i:端口号

在 Linux 下查看进程运行时间的命令

对于一个 Linux 系统的新手,该如何在我的 Ubuntu 服务器上查看一个进程(或者,根据进程 id 去查看)已经运行了多久呢?下面兄弟连Linux培训分享给大家好方法. ···你需要使用 ps 命令来查看关于一组正在运行的进程的信息.ps 命令提供了如下的两种格式化选项. etime 显示了自从该进程启动以来,经历过的时间,格式为 [[DD-]hh:]mm:ss. etimes 显示了自该进程启动以来,经历过的时间,以秒的形式. 如何查看一个进程已经运行的时间? 你需要在 ps 命令之后添

eclipse启动时jdk环境变量的问题及解决办法

以前傻乎乎的,每次安装什么软件都是下载个windows安装文件,然后双击完exe文件就是一个劲儿的点下一步.知道完成,就心满意足的去使用了,后来发现机子卡了,垃圾多了,有些软件明明自己貌似没点安装竟然也有.当时觉得好神奇,现在才发现,那都是自己的问题.好了废话不多说了,接下来说下在本机没有安装JDK的情况下eclipse启动时报的错误及解决办法. eclipse(下载链接:[eclipse](http://pan.baidu.com/s/1mgu0COw)刚刚下载之后 如果没有安装JDK和配置环

linux下查看进程(ps命令)

转自:http://www.jb51.net/LINUXjishu/151851.html Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令.要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态

Linux下查看进程和线程

在linux中查看线程数的三种方法 1.top -H 手册中说:-H : Threads toggle 加上这个选项启动top,top一行显示一个线程.否则,它一行显示一个进程. 2.ps xH 手册中说:H Show threads as if they were processes 这样可以查看所有存在的线程. 3.ps -mp <PID> 手册中说:m Show threads after processes 这样可以查看一个进程起的线程数. 查看进程 1. top 命令 top命令查看

linux下查看进程命令

他们都是用来显示当前运行的进程,但是: ps -aux 是用BSD的格式来显示python这个进程显示的项目有:USER , PID , %CPU , %MEM , VSZ , RSS , TTY , STAT , START , TIME , COMMANDps -ef 是用标准的格式显示python这个进程显示的项目有:UID , PID , PPID , C , STIME , TTY , TIME , CMD ps -ef 中各列的内容意思如下 UID //用户ID.但输出的是用户名 

Linux下查看进程和端口信息

1.根据进程名查看进程信息,以查看tomcat进程名为例,查看所对应的进程id为1095(或者使用: ps -aux | grep tomcat 查看占用内存等信息) ps -ef | grep tomcat 2.根据进程id查看进程占用端口,查看对应端口为8080(如果没有netstat命令,使用 yum  -y  install  net-tools安装) netstat -nap | grep 1095 3.根据端口查看对应进程,查看占用8080端口的进程id,为1095 netstat

linux将指令加入开机启动或加入环境变量

以mongodb运行指令为例,/usr/local/webserver/mongodb/bin/mongo 1,linux将指令加入环境变量PATH 简单说PATH就是一组路径的字符串变量,当你输入的命令不带任何路径时,LINUX会在PATH记录的路径中查找该命令.有的话则执行,不存在则提示命令找不到.比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls命令根本不在这个两个目录下,当你输入ls命令时LINUX会去/bin,/usr/bin,/sbin等目录寻找该命令.而P