https://blog.csdn.net/test1280/article/details/73632333
Linux:进程实例信息(/proc)
问几个问题:

1.怎么知道一个进程对应哪个可执行文件?

2.怎么知道一个进程的资源限制?

3.怎么知道一个进程所处的环境?

4.怎么知道一个进程打开了哪些文件?

……

可以查看/proc下面的内容。

实验环境:

[test1280@localhost ~]$ uname -a
Linux localhost.localdomain 2.6.18-371.el5 #1 SMP Thu Sep 5 21:21:44 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux
1
2
首先我建立一个myfile文件,然后tail -f:

[test1280@localhost 20170623]$ ll
总计 0
-rw-rw-r-- 1 test1280 test1280 0 06-23 10:02 myfile
[test1280@localhost 20170623]$ tail -f myfile
1
2
3
4
这个时候就会挂起啦==》

我们重新开一个终端:

[test1280@localhost ~]$ ps -ef | grep test1280 | grep tail
test1280 14603 11101 0 12:51 pts/12 00:00:00 tail -f myfile
test1280 14611 14568 0 12:51 pts/0 00:00:00 grep tail
1
2
3
看到没?tail的进程PID是14603==》

如何看进程14603对应的进程信息呢?

[test1280@localhost ~]$ cd /proc/14603/
[test1280@localhost 14603]$ ll
总计 0
dr-xr-xr-x 2 test1280 test1280 0 06-23 12:56 attr
-r-------- 1 test1280 test1280 0 06-23 12:56 auxv
-r--r--r-- 1 test1280 test1280 0 06-23 12:51 cmdline
-rw-r--r-- 1 test1280 test1280 0 06-23 12:56 coredump_filter
-r--r--r-- 1 test1280 test1280 0 06-23 12:56 cpuset
lrwxrwxrwx 1 test1280 test1280 0 06-23 12:56 cwd -> /home/test1280/20170623
-r-------- 1 test1280 test1280 0 06-23 12:56 environ
lrwxrwxrwx 1 test1280 test1280 0 06-23 12:56 exe -> /usr/bin/tail
dr-x------ 2 test1280 test1280 0 06-23 12:51 fd
dr-x------ 2 test1280 test1280 0 06-23 12:56 fdinfo
-r-------- 1 test1280 test1280 0 06-23 12:56 io
-r--r--r-- 1 test1280 test1280 0 06-23 12:56 limits
-rw-r--r-- 1 test1280 test1280 0 06-23 12:56 loginuid
-r--r--r-- 1 test1280 test1280 0 06-23 12:56 maps
-rw------- 1 test1280 test1280 0 06-23 12:56 mem
-r--r--r-- 1 test1280 test1280 0 06-23 12:56 mounts
-r-------- 1 test1280 test1280 0 06-23 12:56 mountstats
-r--r--r-- 1 test1280 test1280 0 06-23 12:56 numa_maps
-rw-r--r-- 1 test1280 test1280 0 06-23 12:56 oom_adj
-r--r--r-- 1 test1280 test1280 0 06-23 12:56 oom_score
lrwxrwxrwx 1 test1280 test1280 0 06-23 12:56 root -> /
-r--r--r-- 1 test1280 test1280 0 06-23 12:56 schedstat
-r--r--r-- 1 test1280 test1280 0 06-23 12:56 smaps
-r--r--r-- 1 test1280 test1280 0 06-23 12:51 stat
-r--r--r-- 1 test1280 test1280 0 06-23 12:56 statm
-r--r--r-- 1 test1280 test1280 0 06-23 12:51 status
dr-xr-xr-x 3 test1280 test1280 0 06-23 12:56 task
-r--r--r-- 1 test1280 test1280 0 06-23 12:56 wchan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
捡重要的说==》

cmdline
cwd -> /home/test1280/20170623
environ
exe -> /usr/bin/tail
fd
limits
1
2
3
4
5
6
其实不用我说,一看就明白了…

cmdline:

cmdline指的就是字面意思:命令行==》

cat cmdline
tail -f myfile
1
2
cwd:

cwd指的是那个命令在哪个目录下执行的,我实际是在

/home/test1280/20170623
1
这个目录下新建的myfile然后执行tail,所以这里的cwd就是指向上面的目录的。

lrwxrwxrwx 1 test1280 test1280 0 06-23 12:56 cwd -> /home/test1280/20170623
1
注意cwd是个软链接。

environ:

这个文件记录了进程的环境变量信息。

我们知道每个进程都是有自己的环境表的,那具体有啥呢?

[test1280@localhost 14603]$ cat environ
HOSTNAME=localhost.localdomainTERM=xtermSHELL=/bin/bashHISTSIZE=1000SSH_CLIENT=10.1.93.79 65228 19222SMPDIR=/home/test1280/cmin02smsOLDPWD=/home/test1280SSH_TTY=/dev/pts/12USER=test1280LD_LIBRARY_PATH=:/home/test1280/cmin02sms/libLS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40
……
1
2
3
当然:我们可以从这个文件中查找PWD的值,这个值应该是和cwd一样的,只不过cwd是个软链接。

exe:

不用解释了,可执行文件嘛:

[test1280@localhost 14603]$ ll exe
lrwxrwxrwx 1 test1280 test1280 0 06-23 12:56 exe -> /usr/bin/tail
1
2
可见tail这个文件是在/usr/bin/tail下的。

fd:

文件描述符,可以看看有啥:

[test1280@localhost 14603]$ cd fd
[test1280@localhost fd]$ ll
总计 0
lrwx------ 1 test1280 test1280 64 06-23 13:07 0 -> /dev/pts/12
lrwx------ 1 test1280 test1280 64 06-23 13:07 1 -> /dev/pts/12
lrwx------ 1 test1280 test1280 64 06-23 12:51 2 -> /dev/pts/12
lr-x------ 1 test1280 test1280 64 06-23 13:07 3 -> /home/test1280/20170623/myfile
1
2
3
4
5
6
7
14603这个进程打开了4个文件,其中012是标准的输入输出,3这个文件描述符对应的就是我刚刚的那个文件myfile嘛…

limits:

每个进程其实都有一组限制,限制进程的资源,可以查看limits获得信息:

[test1280@localhost 14603]$ ll limits
-r--r--r-- 1 test1280 test1280 0 06-23 12:56 limits
[test1280@localhost 14603]$ cat 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 10485760 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 29493 29493 processes
Max open files 1024 1024 files
Max locked memory 32768 32768 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 29493 29493 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
可见此时不能生成core文件…..

小结下:

/proc/PID/cmdline
/proc/PID/cwd
/proc/PID/environ
/proc/PID/exe
/proc/PID/fd
/proc/PID/limits

另外,/proc还有cpu信息和内核信息啥的:

[test1280@localhost proc]$ pwd
/proc
[test1280@localhost proc]$ ll cpuinfo
-r--r--r-- 1 root root 0 06-23 13:11 cpuinfo
[test1280@localhost proc]$ ll version
-r--r--r-- 1 root root 0 06-23 13:11 version
[test1280@localhost proc]$ cat version
Linux version 2.6.18-371.el5 (mockbuild@x86-008.build.bos.redhat.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)) #1 SMP Thu Sep 5 21:21:44 EDT 2013
1
2
3
4
5
6
7
8
分别是:

/proc/cpuinfo
/proc/version

要记得,知道一个进程的PID,是可以到/proc下找到其对应的相关信息的!比如从哪里启动的,开了几个文件……

Linux:进程实例信息(/proc)的更多相关文章

  1. Linux进程操作信息

    Linux进程操作简单小结 linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不 ...

  2. 如何灵活运用Linux 进程资源监控和进程限制

    导读 每个 Linux 系统管理员都应该知道如何验证硬件.资源和主要进程的完整性和可用性.另外,基于每个用户设置资源限制也是其中一项必备技能. 在这篇文章中,我们会介绍一些能够确保系统硬件和软件正常工 ...

  3. Linux 进程资源用量监控和按用户设置进程限制

    每个 Linux 系统管理员都应该知道如何验证硬件.资源和主要进程的完整性和可用性.另外,基于每个用户设置资源限制也是其中一项必备技能. 在这篇文章中,我们会介绍一些能够确保系统硬件和软件正常工作的方 ...

  4. Linux进程管理及while循环

    目录 进程的相关概念 进程查看及管理工具的使用 Linux系统作业控制 调整进程优先级 网络客户端工具 bash之while循环 20.1.进程类型 守护进程 daemon,在系统引导过程中启动的进程 ...

  5. Linux 下Qt实现守护进程实例(转)

     原文地址:Linux守护进程的编程方法(含实例) 作者:lingdxuyan 参考文献 Linux信号列表(zz) Linux 守护进程的编程方法 linux上编写守护进程的例程 Linux下后台守 ...

  6. linux下查看运行进程详细信息

    通过ps及top命令查看进程信息时,只能查到相对路径,查不到的进程的详细信息,如绝对路径等.这时,我们需要通过以下的方法来查看进程的详细信息: Linux在启动一个进程时,系统会在/proc下创建一个 ...

  7. linux下查看进程的状态 /proc/[pid]/status

    查看进程的状态: 1.查看进程的pid,以java为例:ps -ef | grep java 2.查看进程状态:cat /proc/[pid]/status 关键字: linux [root@loca ...

  8. 脚本_统计 Linux 进程相关数量信息

    #!bin/bash#作者:liusingbon#功能:统计 Linux 进程相关数量信息,running(运行的进程),sleeping(睡眠中的进程),stoped(停止的进程),zombie(僵 ...

  9. linux 查看运行进程详细信息

    Linux在启动一个进程时,系统会在/proc下创建一个以PID命名的文件夹,在该文件夹下会有我们的进程的信息 通过ll或ls –l命令即可查看. ll /proc/PID cwd符号链接的是进程运行 ...

随机推荐

  1. 电脑一直报PCIE BUS错误的原因

    报错 新装Linux 系统后,每隔数分钟则报以下错误: AER:Corrected error received: 0000:00:1c:4 pcie bus error: severity=Corr ...

  2. Python从菜鸟到高手(5):数字

    1 基础知识   Python语言与其他编程语言一样,也支持四则运算(加.减.乘.除),以及圆括号运算符.在Python语言中,数字分为整数和浮点数.整数就是无小数部分的数,浮点数就是有小数部分的数. ...

  3. Django后端彻底解决跨域问题

    最近在接一个前后端分离的项目,后端使用的django-restframework,前端使用的Vue.后端跑起来后,发现前端在访问后端API时出了了跨域的问题. 类似如下报错: 关于跨域问题,之前这篇文 ...

  4. ACM-ICPC 2017 Asia Urumqi:A. Coins(DP)

    挺不错的概率DP,看似基础,实则很考验扎实的功底 这题很明显是个DP,为什么???找规律或者算组合数这种概率,N不可能给的这么友善... 因为DP一般都要在支持N^2操作嘛. 稍微理解一下,这DP[i ...

  5. 701 C. They Are Everywhere

    链接 [http://codeforces.com/group/1EzrFFyOc0/contest/701/problem/C] 题意 给你一个包含大小写字母长度为n的字符串,让你找包含所有种类字符 ...

  6. VC++6.0的使用感想

    VC++6.0是我接触的第一款编程软件,一直以来都是使用这款软件来完成程序的编写,调试,运行.一直以来都是用C语言编写代码.而VC++6.0窗口简洁明了,占用资源少,上手容易,个人表示很喜欢. VC+ ...

  7. Beta阶段爬取数目预估

    预计于12月29号能进行Beta版本发布. Beta阶段我们的爬取动作应该更有针对性,在爬取期间如若数据处理小组有需求,会优先爬取数据处理小组提供的种子链接.预估在项目展示之前能够爬取的数目: 普通网 ...

  8. RedisDump安装报错

    环境:win10 首先安装 Ruby 安装好后,使用命令行 gem install redis-dump 在安装过程中始终报错,意思是无法使用make命令 然后安装make 参考教程: http:// ...

  9. github学习心得

    1.在GitHub上建立项目登录GitHub后,你可以在右边靠中那里找到一个按钮“New Repository”,点击过后,填入项目名称.说明和网址过后就可以创建.2.配置Git以及上传代码安装Git ...

  10. Aop事务小结(事务管理器和自身构建)

    声明市事务是利用AOP来实现的. 1.采用事务管理器AOP: <!--3.配置事务切面:控制住连接池 --> <bean id="transactionManager&qu ...