strace
程序是一些保存在磁盘上的指令的有序集合,是静态的。
进程是程序执行的过程,包括了动态创建、调度和消亡的整个过程,它是程序资源管理的最小单位。
线程是操作操作系统能够进行运算调度的最小单位
ps -ef
strace:跟踪进程内部的系统调用和信号
1)启动新的进程:strace python sdf.py
2)附着到已启动的进程上:strace -p pid :看到进程执行时候都调用了哪些系统调用
root@ip-10-138-0-103:/home/ubuntu/zcy# strace -p 25165
strace: Process 25165 attached
select(0, NULL, NULL, NULL, {0, 156808}) = 0 (Timeout)
write(1, "222\n", 4) = 4
write(1, "1111\n", 5) = 5
select(0, NULL, NULL, NULL, {2, 0}) = 0 (Timeout)
write(1, "222\n", 4) = 4
write(1, "1111\n", 5) = 5
select(0, NULL, NULL, NULL, {2, 0}) = 0 (Timeout)
write(1, "222\n", 4) = 4
write(1, "1111\n", 5) = 5
pstack可以看到进程内启动的线程号,每个进程内线程的「堆栈」内容也能看到
pstack pid
pstree按树形结构打印运行中进程结构信息
pstree -p pid
/proc/pid/environ 包含了进程的可用环境变量的列表
/proc/pid/cmdline 该文件保存了进程的完整命令行
/proc/pid/cwd一个符号连接, 指向进程当前的工作目录
/proc/pid/exe包含了正在进程中运行的程序链接
/proc/pid/fd/ 这个目录包含了进程打开的每一个文件的链接。从这里可以查看进程打开的文件描述符信息,包括标准输入、输出、错误流,进程打开的socket连接文件描述符也能看到,lsof命令也有类似的作用。
/proc/pid/mem包含了进程在内存中的内容
/proc/pid/statm包含了进程的内存使用信息