Linux排错命令
记录一些排错命令和常用软件的日志位置,排错方法。便于排查、分析问题。
系统
- uname -a # 查看内核/操作系统/CPU信息,可以查看主机名、内核版本、系统平台等
- head -n 1 /etc/issue # 查看操作系统版本
- cat /proc/cpuinfo # 查看CPU信息
- processor 逻辑处理器的id。
- physical id 物理封装的处理器的id。
- core id 每个核心的id。
- cpu cores 位于相同物理封装的处理器中的内核数量。
- siblings 位于相同物理封装的处理器中的逻辑处理器的数量。
- hostname # 查看计算机名
- lspci -tv # 列出所有PCI设备
- lsusb -tv # 列出所有USB设备
- lsmod # 列出加载的内核模块
- lspci # 查看pci硬件信息
- env # 查看环境变量
- sysctl -a # 查看所有系统内核参数 ,如net.ipv4.ip_forward
- ifstat # 查看接口流量
查看发行版
- lsb_release -a # 查看发行版详细信息 (有些发行版需要安装软件)
- cat /etc/os-release
- cat /etc/centos-release
资源
- free -m # 查看内存使用量和交换区使用量
- df -h # 查看各分区使用情况
- du -sh <目录名> # 查看指定目录的大小
- grep MemTotal /proc/meminfo # 查看内存总量
- grep MemFree /proc/meminfo # 查看空闲内存量
- uptime # 查看系统运行时间、用户数、负载
- cat /proc/loadavg # 查看系统负载
磁盘和分区
- mount | column -t # 查看挂接的分区状态
- fdisk -l # 查看所有分区
- lsblk # 查看块设备
- swapon -s # 查看所有交换分区
- hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
- dmesg | grep IDE # 查看启动时IDE设备检测状况
- df -T # 查看文件系统
- df -i # 查看inode数量
网络
- ifconfig # 查看所有网络接口的属性
- iptables -L # 查看防火墙设置
- route -n # 查看路由表
- netstat -lntp # 查看所有监听端口
- netstat -antp # 查看所有已经建立的连接
- netstat -s # 查看网络统计信息
- ip # ip信息
- ss # 查看Socket Statistics
进程
- ps -ef # 查看所有进程
- pstree -g # 查看进程树
- top # 实时显示进程状态
- lsof -u FreezeJ # 查看用户进程
- strace # 可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。
- fuser -v FILENAME # 显示出当前哪个程序在使用磁盘上的某个文件
可以通过进程PID进入对应的目录,查看进程运行的目录和执行的命令、输出信息等:cd /proc/PID && ls -l
用户
- w # 查看活动用户
- id <用户名> # 查看指定用户信息
- last # 查看用户登录日志
- cut -d: -f1 /etc/passwd # 查看系统所有用户
- cut -d: -f1 /etc/group # 查看系统所有组
- crontab -l # 查看当前用户的计划任务cak
服务
- chkconfig –list # 列出所有系统服务
- chkconfig –list | grep on # 列出所有启动的系统服务
日志
- journalctl -u kubelet # Centos6中没有该命令
YUM
- rpm -qa # 查看所有安装的软件包
- yum provides glib-compile-resources # 列出提供对应模块的程序
- yum list # 显示所有已经安装和可以安装的程序包
- yum grouplist # 批量安装的软件列表
- yum info package1 显示安装包信息package1
- yum clean packages 清除缓存目录下的软件包
- yum deplist package1 查看程序package1依赖情况
SSH
- ssh -T # 检测ssh连接的连通性
- ssh -vv # 查看错误详情
- tail -f /var/log/secure # 查看错误信息
- vim /etc/ssh/sshd_config # ssh 后台服务配置文件
- vim /etc/ssh/ssh_config # ssh客户端配置文件
Crontab
tail -f /var/log/cron # 查看crontab执行日志
程序
- gdb # GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。
- ldd # 查看程序依赖
- pstack # 跟踪进程栈
- strace # 跟踪进程中的系统调用
- jstack # java堆栈调试
脚本
使用set指令能设置所使用shell的执行方式,可依照不同的需求来做设置
- -a 标示已修改的变量,以供输出至环境变量。
- -b 使被中止的后台程序立刻回报执行状态。
- -C 所产生的文件无法覆盖已存在的文件。
- -d Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。
- -e 若指令传回值不等于0,则立即退出shell。
- -o pipefail 管道失败也跳出
- -f 取消使用通配符。
- -m 使用监视模式。
- -t 执行完随后的指令,即退出shell。
- -u 当执行时使用到未定义过的变量,则显示错误信息。
- -v 显示shell所读取的输入值。
- -x 执行指令后,会先显示该指令及所下的参数。
- +<参数> 取消某个set曾启动的参数。
也可以通过bash传入set参数,如
bash -euxo pipefail script.sh
补充
查找僵尸进程:
在Linux中有一些有些程序即使执行完了任务,还是会留在进程中,这些程序被称作为僵尸进程,它们残留无任何用处还会消耗硬件资源,虽然无害,但一直存在本身就是个问题了
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' -A 表示显示所有进程 -o 修改显示栏,输出状态、父进程id,进程id,命令 最后过滤僵尸进程状态(z或Z) 或 ps aux | grep Z
定时任务记录TOP进程
*/1 * * * * /usr/bin/top -c -b -n 1 -w 1000 -o "\%MEM" | /usr/bin/head -n 31 >> /tmp/top.log
-c 显示进程名称 -b 输出到文件 -n 1次 -w 宽度 -o 排序(在crontab里面要转义%)