我们使用yum安装程序时,发行版都有默认的安装目录。即使不知道默认的安装目录,也可以使用一下命令(centos下)来查看程序安装时创建了哪些文件。
rpm -ql nginx # 以nginx为例
但如果我们接手了一台编译安装的服务的服务器,且不知道安装位置,服务挂掉想重启时就头大了。更有甚时,一台服务上编译安装了N个版本的程序,即使找到了这些程序的安装目录,也找不知道启动的是哪一个(千万不要以为启动的一定是最新版本的哦)
那么有没有办法查出来运行进程的启动目录呢,当然是有的。本文就以我遇到的在CentOS7下查看运行的nginx的启动目录为例,来进行演示。
背景知识:所有运行中的进程,都会在/proc目录创建一个以自己进程号命名的目录
今天我们接手了一台web服务器,只知道是使用nginx启动的,经排查(我用find查找的),发现服务器上有
1、yum安装的1.14版本的nginx
2、/data/目录有个1.10版本的nginx
3、/usr/local/目录下还有个1.12版本的nginx
以下几步即可找出实际启动的是哪个
# 查找出nginx的主进程id
[root@gaszf-web1-new nginx]# ps -ef | grep nginx
root 50564 1 0 2月01 ? 00:00:01 nginx: master process ./nginx
nobody 114944 50564 0 00:01 ? 00:02:23 nginx: worker process
nobody 114945 50564 0 00:01 ? 00:03:30 nginx: worker process
nobody 114946 50564 0 00:01 ? 00:02:43 nginx: worker process
nobody 114947 50564 0 00:01 ? 00:04:44 nginx: worker process
root 142904 140953 0 19:36 pts/0 00:00:00 grep --color=auto nginx
# 查看其运行目录下的cwd
[root@gaszf-web1-new nginx]# ls -l /proc/50564/cwd
lrwxrwxrwx 1 root root 0 4月 26 19:36 /proc/50564/cwd -> /usr/local/nginx/sbin
对,没错,就是这个cwd,cwd是一个符号链接,指向进程当前的工作目录。
所以咯,我们使用的是/usr/local/下的1.12版本的nginx,有了工作目录,就简单了,各种配置都可以找到了