写本篇博客的初衷
我有一个阿里云ECS,给一个师妹也开了一个账号,最近发现可能重启比较严重。刚好在测试自己写的一个文件存储网络,ssh断开后一下子忘记了源码目录了。
ssh重连后,发现进程是daemon。这就放心了。可执行文件还在,那么源码应该也是在的。
先获取进程id
[root@localhost ~]# ps -aux | grep ipfs
root 13115 0.0 0.0 138680 764 ? Ssl 17:36 0:00 ./bin/ipfs --daemon
root 13526 0.0 0.2 110280 2084 pts/1 S+ 18:15 0:00 grep --color=auto ipfs
[root@localhost ~]#
进入进程的proc目录:
[root@localhost ~]# cd /proc/13115/cwd/
[root@localhost 13115]# ls
attr clear_refs cpuset fd limits mem net oom_score projid_map sessionid stack syscall uid_map
autogroup cmdline cwd fdinfo loginuid mountinfo ns oom_score_adj root setgroups stat task wchan
auxv comm environ gid_map map_files mounts numa_maps pagemap sched smaps statm timers
cgroup coredump_filter exe io maps mountstats oom_adj personality schedstat smaps_rollup status timerslack_ns
[root@localhost 13115]#
差看绝对路径:
[root@localhost 13115]# ll exe
lrwxrwxrwx. 1 root root 0 Sep 30 17:36 exe -> /root/c++/ipfs-cxx/build/bin/ipfs
[root@localhost 13115]#
源码绝对路径:
[root@localhost 13115]# cd /root/c++/
[root@localhost c++]# cd ipfs-cxx
[root@localhost ipfs-cxx]# ls
build CMakeLists.txt include README.md src
[root@localhost ipfs-cxx]# ll
total 28
drwxr-xr-x. 4 root root 4096 Sep 30 17:34 build
-rw-r--r--. 1 root root 8817 Sep 27 12:11 CMakeLists.txt
drwxr-xr-x. 2 root root 4096 Sep 27 17:44 include
-rw-r--r--. 1 root root 1563 Sep 30 16:44 README.md
drwxr-xr-x. 9 root root 4096 Sep 30 17:02 src
[root@localhost ipfs-cxx]#
当然,proc不仅可以看文件路径,它可以查看进程的所有资源(文件、网络、线程、进程、锁、环境变量、用来控制硬件例如led灯,键盘,鼠标等),做的事情很多。比如/proc/xxxxid/fd/目录下面,就是进程打开的所有文件描述符。task/下面是线程Id。