【翻译】基本的Linux排查问题的技巧

硬件相关

获取内存信息

1
cat /proc/meninfo

如果你只是想看一下内存的大小,你可以这样:

1
cat /proc/meminfo | head -n 1

一些其他有意思的操作,下面这条命令你能看到内存中纯文本信息:

1
sudo dd if=/dev/mem | cat | strings

同样的,使用strings命令你也能够查看二进制程序中的字符串常量。

获取CPU信息

一些时候你想要知道是什么进程占用了CPU,是你的应用程序还是操作系统,你可以使用如下两条命令:

1
cat /proc/cupinfo

1
top

top有一个升级版本htop,他显示更加友好:

1
htop

获取CPU当前温度信息:

1
cat /proc/acpi/thermal_zone/THRM/temperature

列出外部设备以及USB信息

1
2
3
4
5
lspci
``
对于USB信息:
```shell
lsusb

检查硬盘使用情况

1
df -h

检查硬盘挂载情况

1
sudo fdisk -l

安装应用程序

有时候你需要查看一下当前系统上安装的所有的包,你能发现为甚会安装他,那些包在依赖这些包

1
dpkg --get-selections | less

检查所有已经安装的包,对于yum来说是

1
sudo yum list --installed

查看安装原因:

1
aptitude why packagename

找出包中存储的文件:

1
dpkg -L packagename

dpkg这个命令怎么记呢: debian package的缩写。

关闭进程

1
2
ps -A | grep Prograname
kill 7207

其他杂项

显示所有的网络链接

Linux上有非常多的好用的功能能查看网络情况,netstat就是其中最简单易用的一个。

1
netstat

结合相关的命令行参数或者grep来使用会更加的强大。

查看当前系统上所有打开的文件

有时候我们需要知道Linux上某个文件或者是某个端口被哪个应用程序占用了,我们可以使用lsof命令,也就是list all opened files

1
2
# 查看8080端口被哪个程序占用了
sudo lsof -i:8080

1
2
# 查看pid为1898的进程打开了那些文件或者端口
sudo lsof -p 1898

持续观察系统

watch命令能够反复的执行一条命令,将标准输出输出到屏幕,默认是2s执行一次。

1
2
watch ls
watch df -h

查找二进制程序和依赖库的安装地址

1
2
3
经常我们需要使用一条命令的绝对路径来使用他,我们需要知道他的安装地址:
```shell
whereid php5
1
whichi ls

有时候我们在使用一条命令的时候,我们并不知道这个命令是一个bash函数,还是一个bash内置命令,还是一个二进制程序,我们可以使用type命令:

1
2
hellojukay@local:~$ type ls
ls 是 `ls --color=auto' 的别名

日志

如果你要查看内核输出的日志:

1
dmesg | less

如果要查看更多的日志,可以在/var/log查找相关的日志文件,使用cat,less,tail,grep等工具来检索日志信息。

原文地址: [https://www.nixtutor.com/linux/general-troubleshooting-in-linux/](https://www.nixtutor.com/linux/general-troubleshooting-in-linux/)