FreezeJ' Blog

Linux排错命令

2019-05-10

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里面要转义%)
    
Tags: Linux