/proc内容
/proc文件系统的容量依系统而不同(硬件配置、体系结构),主要包含以下几大类:
进程的特征数据
内存管理
文件系统
设备驱动程序
系统总线
电源管理
终端
系统控制参数
获取进程的数据
/proc的初衷就是来传递进程数据,因为linux下,一切皆是文件,我们运行起来的进程也可以看成文件
root@das:/$ ls /proc/1238/
attr cwd map_files oom_adj sessionid timers
autogroup environ maps oom_score setgroups timerslack_ns
auxv exe mem oom_score_adj smaps uid_map
cgroup fd mountinfo pagemap stack wchan
clear_refs fdinfo mounts personality stat
cmdline gid_map mountstats projid_map statm
comm io net root status
coredump_filter limits ns sched syscall
cpuset loginuid numa_maps schedstat task
这是进程pid号为1838的进程状态信息。具体信息cat查询即可。
environ:表示为该程序所设置的环境变量。
maps:列出了进程所使用的库,有点长。。
status:包含了进程状态一般信息(text格式)
stat和statm:以一连串数字的形式提供进程内存消耗的信息
fd:文件夹内有一连串数字文件,表示文件描述符,都是符号链接,链接到对应的文件,这个就代表这个进程中打开了哪些文件。
cwd:是个符号链接,对应到进程工作目录
exe:是个符号链接,对应到可执行二进制文件
root:指向当前进程根目录
测试
我们这里在打开一个程序来查看其进程的数据
# 开启一个程序
nc -l localhost 8080
# 查看其进程id
ps -ef|grep nc
# 打开进程对应的文件夹,这里的2380是我查询到的进程id
cd /proc/2380
fd文件夹:进程打开的所有文件的描述符
我们随便打开fd这个文件夹查看当前进程打开了哪些文件
cd fd
ls -al
前三个依次是标准输入,标准输出,错误输出。
第三个是一个socket文件,因为我们打开的是一个服务器程序,监听8080端口,所以这里会有对应的socket文件,这又再次看出来了linux下一切皆是文件,每一个socket连接,也是一个文件
task文件夹:当前进程开启的所有线程的信息
/etc内容
/etc目录
包含很多文件.许多网络配置文件也在/etc 中。也可以将我们自己安装的一些软件的配置文件放置到该文件夹下面
/etc/rc or/etc/rc.d or/etc/rc.d*
启动、或改变运行级时运行的scripts或scripts的目录.
/etc/passwd
用户数据库,其中的域给出了用户名、真实姓名、家目录、加密的口令和用户的其他信息.
/etc/group
类似/etc/passwd ,但说明的不是用户而是组
/etc/inittab
init 的配置文件.
/etc/login.defs
login 命令的配置文件.
/etc/profile
启动shell的时候要执行的初始化脚本