Linux:进程实例信息(/proc)
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)的更多相关文章
- Linux进程操作信息
Linux进程操作简单小结 linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不 ...
- 如何灵活运用Linux 进程资源监控和进程限制
导读 每个 Linux 系统管理员都应该知道如何验证硬件.资源和主要进程的完整性和可用性.另外,基于每个用户设置资源限制也是其中一项必备技能. 在这篇文章中,我们会介绍一些能够确保系统硬件和软件正常工 ...
- Linux 进程资源用量监控和按用户设置进程限制
每个 Linux 系统管理员都应该知道如何验证硬件.资源和主要进程的完整性和可用性.另外,基于每个用户设置资源限制也是其中一项必备技能. 在这篇文章中,我们会介绍一些能够确保系统硬件和软件正常工作的方 ...
- Linux进程管理及while循环
目录 进程的相关概念 进程查看及管理工具的使用 Linux系统作业控制 调整进程优先级 网络客户端工具 bash之while循环 20.1.进程类型 守护进程 daemon,在系统引导过程中启动的进程 ...
- Linux 下Qt实现守护进程实例(转)
原文地址:Linux守护进程的编程方法(含实例) 作者:lingdxuyan 参考文献 Linux信号列表(zz) Linux 守护进程的编程方法 linux上编写守护进程的例程 Linux下后台守 ...
- linux下查看运行进程详细信息
通过ps及top命令查看进程信息时,只能查到相对路径,查不到的进程的详细信息,如绝对路径等.这时,我们需要通过以下的方法来查看进程的详细信息: Linux在启动一个进程时,系统会在/proc下创建一个 ...
- linux下查看进程的状态 /proc/[pid]/status
查看进程的状态: 1.查看进程的pid,以java为例:ps -ef | grep java 2.查看进程状态:cat /proc/[pid]/status 关键字: linux [root@loca ...
- 脚本_统计 Linux 进程相关数量信息
#!bin/bash#作者:liusingbon#功能:统计 Linux 进程相关数量信息,running(运行的进程),sleeping(睡眠中的进程),stoped(停止的进程),zombie(僵 ...
- linux 查看运行进程详细信息
Linux在启动一个进程时,系统会在/proc下创建一个以PID命名的文件夹,在该文件夹下会有我们的进程的信息 通过ll或ls –l命令即可查看. ll /proc/PID cwd符号链接的是进程运行 ...
随机推荐
- Auto-ML之自动化特征工程
1. 引言 个人以为,机器学习是朝着更高的易用性.更低的技术门槛.更敏捷的开发成本的方向去发展,且Auto-ML或者Auto-DL的发展无疑是最好的证明.因此花费一些时间学习了解了Auto-ML领域的 ...
- redis调优的实战经验
本文根据redis的info命令查看redis的内存使用情况以及state状态,来观察redis的运行情况以及需要作出的相应优化. info 1.memory used_memory:13409011 ...
- KVM虚拟机管理——虚拟机克隆
1. 概述2. 部署基本操作系统虚拟机3. 配置虚拟机3.1 修改/etc/sysconfig/network3.2 删除/etc/sysconfig/network-scripts/ifcfg-et ...
- Jmeter(三十三)_JsonPath表达式提取响应
我们在用jmeter做接口测试的时候,有的时候会遇到一些复杂的json响应.比如多层list嵌套时的取值 一个简单的例子: $..Name:列出所有省份 $..Province[0].Name 提取P ...
- 解决 webpack-dev-server 不能自动刷新的问题
原文发表于我的技术博客 此文主要帮助大家解决 webpack-dev-server 启动后修改源文件浏览器不能自动刷新的问题. 原文发表于我的技术博客 1. webpack 不能热加载的问题 主要的问 ...
- awk技巧(如取某一行数据中的倒数第N列等)
使用awk取某一行数据中的倒数第N列:$(NF-(n-1))比如取/etc/passwd文件中的第2列.倒数第1.倒数第2.倒数第4列(以冒号为分隔符) [root@ipsan-node06 ~]# ...
- linux下core file size设置笔记
现象说明:突然发现一台测试机器的java程序莫名其妙地没了,但是没有core dump!这就需要打开服务器的core文件生成的功能了,(即core dump文件),方便程序调试.1)core文件简介c ...
- linux内核分析程序破解实践报告
- Linux内核第六节 20135332武西垚
如何描述一个进程:进程描述符的数据结构: 如何创建一个进程:内核是如何执行的,以及新创建的进程从哪里开始执行: 使用gdb跟踪新进程的创建过程. 进程的描述 操作系统三大功能: 进程管理(最核心最基础 ...
- java 五子棋游戏
五子棋游戏 一,1.五子棋的基本常识 与任何一种竞技棋一样,五子棋的每一局棋也分为三个阶段:开局,中局和残局. 五子棋的开始阶段称为开局,或称布局.其开局阶段是十分短暂的,大约在七着与十几着之间.在这 ...