系统问题排查总结(Linux指令)
目录
我们在Linux环境中进行问题排查时,需要掌握一些基本的Linux指令。以下是一些常用的Linux指令,我觉得是非常必要的:
一、文件查看与搜索
1. locate命令
# 通过文件名来搜索文件的具体路径
locate filename
在此之前,需要重新建立整个系统所有文件和目录的资料库,方便以后再查找文件:
sudo updatedb
如果执行locate命令时出现以下错误:
-bash: updatedb: command not found
解决方法:执行
yum install mlocate
2.find命令
# 查找
/etc/nginx
目录下名为nginx.conf
的文件find /etc/nginx -name nginx.conf
# 查找
/etc/nginx
目录下所有.conf
结尾的文件find /etc/nginx -name '*.conf'
3. grep命令
# 查找文件中所有包含字符串"hello"的行
grep 'hello' file.txt
# 在/path/to/directory目录下查找所有包含"hello"字符串的文件
# -r 或 -R:递归地搜索目录及其子目录中的文件。
# -n: 表示在输出中包含匹配行的行号。
# -w: 表示匹配整个单词
grep -r 'hello' /path/to/directory
# 在 /etc/nginx 目录及其子目录中搜索包含文本 "443" 的 .conf 文件
grep -rnw '/etc/nginx' -e '443' --include=*.conf
4. tail 命令
# 实时查看文件内容
tail -f /var/log/syslog
5. less命令
less filename.out
快捷键 shift + F :跳转到文件尾,实时刷新;
ctrl + Z:结束查看。
less运行时可以输入的命令有:
空白键:向下翻动一页;
[down]:向下翻动一行;
[up]:向上翻动一行;
/字串:向下搜寻『字串』的功能;
?字串:向上搜寻『字串』的功能;
q:离开 less 这个程序;
二、查看进程状态
ps命令
# 查看当前运行的进程,通过grep可以过滤出特定进程,排除grep本身的进程
ps -ef | grep <进程名> | grep -v grep
ps -ef | grep <进程号> | grep -v grep
-e 选项表示显示所有进程,
-f 选项表示使用全格式输出,即显示更详细的进程信息。
输出的信息通常包括UID(用户ID)、PID(进程ID)、PPID(父进程ID)、C(CPU利用率)、STIME(开始时间)、TTY(控制终端)、TIME(CPU时间)、CMD(命令行)等字段。
三、查看网络状态
netstat命令
# 列出所有当前正在监听的端口
netstat -l
# 查看特定端口的使用情况,如被哪个进程占用
netstat -tulpn | grep <port_number>
# 杀进程
kill -9 <进程ID>
netstat 是一个显示网络状态的工具
-t 选项表示显示TCP连接。
-u 选项表示显示UDP连接。
-l 选项表示仅显示监听状态的套接字。
-p 选项表示显示每个连接的进程ID和程序名。
-n 选项表示以数字形式显示地址和端口号,而不是尝试解析为主机名、服务名等。
四、性能评估与诊断
1. top命令
作为一个常用的性能分析工具,实时显示系统中正在运行的进程以及它们的CPU使用率、内存使用率等信息。
启动top命令:直接在终端中输入top即可启动。
查看统计信息:top命令的前几行会显示系统的整体统计信息,如总的任务数、CPU使用率、内存使用率等。
查看进程信息:在top命令的输出中,可以看到各个进程的PID(进程ID)、USER(用户)、PR(优先级)、NI(nice值)、VIRT(虚拟内存使用量)、RES(常驻内存使用量)、SHR(共享内存大小)、S(进程状态)、%CPU(CPU使用率)和%MEM(内存使用率)等信息。
2. strace命令
用于跟踪一个进程的系统调用。
1. 分析进程行为:
strace -p <进程ID>
找到占用率高的进程,使用strace -p <进程ID>跟踪系统调用,以了解进程在做什么。可以看到进程发出了哪些系统调用、系统调用的参数是什么、以及这些系统调用的返回值是什么。
2. 确定原因:
- 进程可能是正常的但计算密集,例如在进行大量数据处理或渲染。
- 也可能是存在性能问题,如死循环、不恰当的算法实现等。
- 也有可能是被恶意软件利用,进行非法活动。
3. 采取相应措施:
- 优化代码:如果进程是计算密集型的正常应用,考虑优化其算法或使用更高效的技术。
- 升级硬件:如果服务器硬件过旧,考虑升级CPU或增加核心数量。
- 限制资源:使用cgroups(Linux)或其他资源管理工具限制进程的资源使用。
- 终止进程:如果进程是恶意或存在严重问题,考虑安全地终止它。
- 调整优先级:使用nice或renice(Linux)调整进程的优先级,降低其对CPU的占用。
3. free命令
用于显示系统的内存使用情况。用户可以获取到关于系统内存(程序运行)的各种信息,如总内存、已用内存、空闲内存、共享内存、缓存/缓冲区内存等。
free命令的常用参数包括:
-b:以字节(Byte)为单位显示内存使用情况。
-k:以千字节(KB)为单位显示内存使用情况。
-m:以兆字节(MB)为单位显示内存使用情况。
-g:以吉字节(GB)为单位显示内存使用情况。
-o:不显示缓冲区调节列。
-s :持续观察内存使用情况,每隔指定的秒数刷新一次显示。
-t:显示内存总和列。
4. df命令
用于显示文件系统的磁盘空间(存放资料)使用情况。用户可以查看每个文件系统的磁盘空间总量、已使用的空间量、剩余空间量以及挂载点等信息。
df [选项] [文件名]
选项是用来指定命令的行为的,而文件名则是用来指定要查看的文件系统。如果没有指定文件名,那么df命令将显示所有当前已挂载的文件系统的磁盘空间信息。
常用的选项包括:
-a:显示所有文件系统,包括虚拟文件系统。
-B:指定显示时的块大小,比如以M、G为单位显示。
-h:以人类可读的格式显示信息,比如将字节转换为KB、MB等。
-k:以KB为单位显示各文件系统。
-m:以MB为单位显示各文件系统。
-t:只显示指定类型的文件系统。
例如,要查看当前文件系统的磁盘空间使用情况,可以直接输入“df”命令;要查看指定文件系统的信息,可以输入“df /dev/sda1”;要以GB为单位且输出人类可读格式的文件系统信息,可以使用“df -h /”命令。
更多推荐
所有评论(0)