ps
查看进程的启动时间、运行时间
ps -p 633 -o pid,lstart,etime
nethogs
安装: sudo apt install nethogs
实时查看网络状态: nethogs -d 网卡名称
ldd,nm
ldd是用来分析程序运行时需要依赖的动态库的工具。
nm命令主要是用来列出目标文件和可执行文件中的符号(说白了就是一些函数和全局变量等),在nm的时候,加上-C选项,可以把难以识别的符号,转换成便于我们阅读的符号。
dmesg
dmesg命令作用:
- 用来显示开机信息, kernel会将开机信息存储在ring buffer中,开机时来不及查看信息,可利用dmesg来查看,从中获得诸如系统架构、CPU、挂载的硬件,RAM等多个运行级别的大量的系统信息。
- dmesg 命令设备故障的诊断是非常重要的。在dmesg命令的帮助下进行硬件的连接或断开连接操作时,我们可以看到硬件的检测或者断开连接的信息。
lsof
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。
在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。
安装:apt-get install lsof
常用命令:
-
查看谁正在使用某个文件
lsof /filepath/file
-
列出某个程序所打开的文件信息
lsof -c 进程名
lsof -p pid
-
列出所有tcp 网络连接信息
lsof -i tcp
-
特定的tcp端口
lsof -i tcp:80
nohup和&
使用&后台运行程序:
-
结果会输出到终端
-
使用Ctrl + C发送SIGINT信号,程序免疫
-
关闭session发送SIGHUP信号,程序关闭
使用nohup运行程序:
-
结果默认会输出到nohup.out
-
使用Ctrl + C发送SIGINT信号,程序关闭
-
关闭session发送SIGHUP信号,程序免疫
平日线上经常使用nohup和&配合来启动程序:
- 同时免疫SIGINT和SIGHUP信号
top
top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。常用内部命令如下:
- f :选择显示的内容
- s :改变画面更新频率
- P : 以 CPU 占用率大小的顺序排列进程列表
- M : 以内存占用率大小的顺序排列进程列表
- h : 显示帮助
- q : 退出 top
显示内容描述:
-
VIRT:virtual memory usage 虚拟内存
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量 -
RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小 -
SHR:shared memory 共享内存
1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来 -
DATA
1、数据占用的内存。如果top没有显示,按f键可以显示出来。
2、真正的该程序要求的数据空间,是真正在运行中要使用的。
top 启动命令参数:
- -d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;
- -b:使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;
top -b -n 100 >> top.txt #执行100次 top -b >> top.txt #一直执行
- -n 次数:指定 top 命令执行的次数。一般和"-"选项合用;
- -p 进程PID:仅查看指定 ID 的进程;
实时保存输出到文件,重定向即可: