在Linux上,proc是一个伪文件系统,提供了访问内核数据的方法, 一般挂载在
/proc
目录,其中大部分是只读的。
/proc
重要的文件
/proc/[pid]
目录,pid为进程的数字ID,每个运行着的进程都有这么一个目录。
/proc/[pid]/cmdline
是一个只读文件,包含进程完整的命令行信息。如果这个进程是zombie进程,则这个文件没有任何内容。
> cat /proc/1751/cmdline
java -jar rumenz.jar
这是一个JAVA进程。
> cat /proc/1751/comm
java
/proc/[pid]/cwd
是进程当前工作目录的符号链接
> ls -al /proc/1751/cwd
drwxr-xr-x 2 root root 21 Jan 13 14:33 app
-rw-r--r-- 1 root root 69783738 Mar 12 14:25 rumenz.jar
drwxr-xr-x 4 root root 176 Mar 15 15:43 web
drwxr-xr-x 3 root root 57 Mar 12 13:26 web-test
/proc/[pid]/environ
里面是进程的环境变量
> strings /proc/1751/environ
TOMCAT_HOME=/opt/apache-tomcat-8.5.50
XDG_SESSION_ID=17932
HOSTNAME=JD
TERM=xterm-256color
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=27.17.144.118 4314 22
OLDPWD=/opt
SSH_TTY=/dev/pts/1
JAVA_OPTS=-server -Xms4096m -Xmx4096m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m
JRE_HOME=/opt/java/jdk1.8.0_231/jre
USER=root
/proc/[pid]/exe
为实际运行程序的符号链接
> ls -al /proc/1751/exe
lrwxrwxrwx 1 root root 0 Jul 13 23:07 /proc/1751/exe -> /opt/java/jdk1.8.0_231/bin/java
/proc/1751/fd
包含当前进程打开文件
> ls -al /proc/1751/fd
dr-x------ 2 root root 0 Jul 12 21:12 .
dr-xr-xr-x 9 root root 0 Jul 11 21:13 ..
l-wx------ 1 root root 64 Jul 13 23:02 0 -> /dev/null
l-wx------ 1 root root 64 Jul 13 23:02 1 -> /opt/Bts/nohup.out
lr-x------ 1 root root 64 Jul 13 23:02 10 -> /dev/urandom
lr-x------ 1 root root 64 Jul 13 23:02 11 -> /dev/random
lr-x------ 1 root root 64 Jul 13 23:02 12 -> /dev/random
lr-x------ 1 root root 64 Jul 13 23:02 13 -> /dev/urandom
lr-x------ 1 root root 64 Jul 13 23:02 14 -> /dev/urandom
lrwx------ 1 root root 64 Jul 13 23:02 15 -> socket:[499343100]
目录中的每一项都是一个符号链接,指向打开的文件,数字则代表文件描述符。
/proc/[pid]/limits
显示当前进程的资源限制。
> cat /proc/1751/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
相关文章