Back

linux 操作: 如何知道某个pid 是在哪个目录下运行的?

发布时间: 2015-08-05 09:34:00

换句话说,就是如何知道某个pid是有用的?

比如: $ps -ef | grep thin

出现了几个我们认为不知道从何而来的东东:

➜  ubuntu@105: /home/ubuntu  >ps -ef | grep thin
ubuntu    3890     1  0 12:34 ?        00:01:24 thin server (0.0.0.0:3355)                                                                                                                                                                                                                                                                                                                   
ubuntu    3907     1  0 12:34 ?        00:01:20 thin server (0.0.0.0:3356)                                                                                                                                                                                                                                                                                                                   
ubuntu   10180     1  0 Jul16 ?        00:03:08 thin server (0.0.0.0:3350) 

上面的 3350 端口,是我们所不了解的。 它是启动于: 7月16日, 总共运行时间: 3份8秒。 进程ID 10180

对于Rails来说,我们需要知道它是属于哪个文件夹的,才能判断它是否有用。 

如何判断呢?   

每个PID 都有一个 专门的文件夹, 记录它的各种信息, 这个文件夹,就是    /proc/<pid>  

所以,想看到上面的 10180 的信息,我们就需要:

$ cd /proce/10180

$ ls

>$ ls
attr        cmdline          environ  io         maps        net        oom_score_adj  sched      stat     timers
autogroup   comm             exe      latency    mem         ns         pagemap        schedstat  statm    uid_map
auxv        coredump_filter  fd       limits     mountinfo   numa_maps  personality    sessionid  status   wchan
cgroup      cpuset           fdinfo   loginuid   mounts      oom_adj    projid_map     smaps      syscall
clear_refs  cwd              gid_map  map_files  mountstats  oom_score  root           stack      task

其中的 几个重要东东:

lrwxrwxrwx 1 ubuntu ubuntu 0 Aug  5 12:39 cwd -> /opt/app/youku_bd_automation/releases/20150703035000 (deleted)
-r-------- 1 ubuntu ubuntu 0 Aug  5 17:33 environ
lrwxrwxrwx 1 ubuntu ubuntu 0 Aug  5 12:39 exe -> /home/ubuntu/.rbenv/versions/1.9.3-p551/bin/ruby

我们就知道 cwd 是运行程序的位置, exec 就是运行的程序。 cmdline 就是具体的参数(?)

>cat cmdline 
thin server (0.0.0.0:3350)%       

所以,我们根据  cwd 发现,这个 pid 对应的 文件夹已经被删掉了。 所以我们直接删掉这个pid .就可以了。

Back