Linux 命令总结
基础
目录切换
1 | cd usr # 切换到该目录下的usr目录 |
文件压缩
1 | tar -zcvf <打包压缩后的文件名> <要打包压缩的文件> |
1 | tar -xvf <压缩文件> |
显示网络状态
1 | netstat -a # 显示详细的网络状况 |
top 输出详解
顶部
- Load Average 平均负载,标识在一定时间范围内系统中正在运行或等待运行的进程数量。以三个值表示,分别对应在过去1分钟、5分钟和15分钟的平均负载。
- Tasks 任务数目,正在运行的进程数量。包括僵尸进程。
- %CPU
- MiB Mem
- MiB Swap
进程 - PID 进程唯一标识符号
- USER 运行进程的用户或者所有者
- PR 进程的优先级
- NI 进程的nice值,用于调整进程的优先级
- VIRT 进程使用的虚拟内存的大小
- RES 进程实际使用的物理内存大小
- SHR 进程使用的共享内存大小
- S 进程的状态
- %CPU 进程使用的CPU资源百分比
- %MEM 进程使用的内存资源百分比
- TIME+ 进程自启动以来所使用的CPU时间
- COMMAND 运行进程的命令或者可执行文件的名称
问题
发现服务器很卡,可能的原因有哪些?
- CPU利用率过高:可能是某个进程或者线程占用了大量的CPU资源,导致其他进程或线程无法得到足够的CPU时间片,从而导致服务器变慢。
- 内存使用过高:可能是某个进程占用了大量的内存,导致系统的可用内存不足,进而引发频繁的页面交换,导致服务器变得卡顿。
- 磁盘I/O过高,可能是某个进程进行了大量的磁盘读写操作,导致磁盘I/O过高,进而影响到其他进程的磁盘读写,导致服务器变得卡顿。
- 网络带宽不足,可能是网络流量过大,导致网络带宽不足,进而影响服务器的网络通信,导致服务器变得卡顿。
排查方法如下:
- 查看系统负载:可以使用top或htop命令查看系统的负载情况,包括CPU使用率、内存使用情况、磁盘I/O等。
- 查看进程状态
- 查看网络状态
- 使用专业工具
代码死循环属于上面哪一种情况?
占用大量CPU资源死锁属于上面哪一种情况?
如果忙等待的话,会占用大量的CPU资源。多进程,多线程频繁切换会导致上面哪一种情况?
非自愿上下文切换多,说明进程都在被强制调度,说明都在争抢CPU,CPU成为瓶颈。
如何排查CPU 100% ?
- 首先使用top命令排查是哪个进程占用了CPU
- 使用top -Hp PID,显示进程PID下的所有线程
- gdb调试线程
如何排查内存超出问题?
- 首先需要计算大致内存消耗
- 在程序运行的过程中,通过添加断点等方式,观察内存的变化情况
- 找到与内存开销不相符的地方,进行进一步的观察和调试。
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Writer-X!