Linux Process 进程

Linux的/proc目录提供了系统、进程等的状态的文本信息,可直接查看。这些信息也受权限控制,一般只有root和进程创建者可以查看。更多信息请参考proc进程信息解析

1. 系统信息

查看CPU硬件信息

cat /proc/cpuinfo

2. 进程信息

/proc/目录下以数字命名的目录是都对应于进程pid的进程信息。

cmdline 启动该进程的命令和参数。

cwd 该进程的工作目录。它是一个软链,指向某个目录。

environ 该进程的所有环境变量。

exe 该进程的可执行程序。

fd 查看该进程打开的文件,以文件描述符显示。

maps 查看进程的虚拟地址空间,包括栈、堆、文件映射。

status 该进程的综合信息。

3. 使用strace跟踪进程系统调用

strace是非常实用的工具,用于查看进程的系统调用。CentOS安装strace:yum install strace

启动

strace可以跟踪已经在运行的程序:strace -p <pid>。也可以啓动程序并跟踪:strace 启动命令

常用命令选项

#查看程序运行中都打开了哪些文件,对文件进行了哪些操作(例如:可以看程序啓动时都读取了哪些配置文件)
strace -e open,access,read,write 启动命令
#查看网络连接相关
strace -e poll,select,connect,recvfrom,sendto 启动命令

#统计进程时间都花在哪些系统调用上
strace -c 启动命令

其它问题

1)当跟踪的进程是shell脚本,脚本里面又执行了其它命令时,默认情况下strace是只跟踪啓动的shell脚本,不跟踪shell啓动的子进程的。所以需要加上-f选项,跟踪所有子进程的系统调用。

2)如果跟踪IO读写数据内容的,使用选择-xx可以显示十六进制内容。使用选择-s 字符串最大长度可以指定IO抓取的字符串的最大长度,对于观察网络交互时拿到更多的传输数据有很大帮助。

文档更新时间: 2018-11-10 20:26   作者:nick