Linux运维常用命令大全

Linux运维常用命令大全

1. 基础命令

文件操作

ls
  • 概念:列出目录内容

  • 示例

    bash 复制代码
    ls                  # 列出当前目录文件
    ls -l               # 详细列表(权限、所有者、大小、时间)
    ls -a               # 显示隐藏文件(以.开头的文件)
    ls -lhS             # 按大小降序排列,人类可读格式
    ls -ltr             # 按修改时间倒序排列
cp
  • 概念:复制文件或目录

  • 示例

    bash 复制代码
    cp file1.txt file2.txt          # 复制文件
    cp -r dir1 dir2                 # 递归复制目录
    cp -a source dest               # 保留权限、属性的归档复制
    cp -v file1.txt /path/to/dir/   # 显示复制过程
mv
  • 概念:移动或重命名文件/目录

  • 示例

    bash 复制代码
    mv oldname.txt newname.txt      # 重命名文件
    mv file.txt /path/to/dir/       # 移动文件到目录
    mv -f file.txt /existing/path/  # 强制移动(覆盖不提示)
    mv dir1 dir2                    # 重命名目录
rm
  • 概念:删除文件或目录

  • 示例

    bash 复制代码
    rm file.txt                     # 删除文件
    rm -r dir/                      # 递归删除目录及其内容
    rm -rf dir/                     # 强制删除目录(无提示,危险操作)
    rm *.log                        # 删除所有.log文件
touch
  • 概念:创建空文件或更新文件时间戳

  • 示例

    bash 复制代码
    touch newfile.txt               # 创建空文件
    touch file1.txt file2.txt       # 创建多个文件
    touch -t 202312312359 file.txt  # 设置文件时间戳为指定日期时间
cat
  • 概念:连接并显示文件内容

  • 示例

    bash 复制代码
    cat file.txt                    # 显示文件内容
    cat file1.txt file2.txt > combined.txt  # 合并文件
    cat -n file.txt                 # 显示行号
    cat > newfile.txt               # 从标准输入创建文件(Ctrl+D结束)
more/less
  • 概念:分页查看文件内容(less支持前后滚动)

  • 示例

    bash 复制代码
    more largefile.txt              # 空格键翻页,q退出
    less largefile.txt              # 支持上下键滚动,/pattern搜索,q退出
    less +G largefile.txt           # 直接跳转到文件末尾
head/tail
  • 概念:查看文件开头/结尾内容

  • 示例

    bash 复制代码
    head file.txt                   # 查看前10行(默认)
    head -n 20 file.txt             # 查看前20行
    tail file.txt                   # 查看最后10行
    tail -n 15 file.txt             # 查看最后15行
    tail -f /var/log/messages       # 实时跟踪日志文件更新
    tail -F /var/log/messages       # 跟踪文件,即使文件被轮转

目录管理

cd
  • 概念:切换当前工作目录

  • 示例

    bash 复制代码
    cd /path/to/dir                 # 进入指定目录
    cd ..                           # 返回上一级目录
    cd                              # 回到当前用户家目录
    cd ~username                    # 进入指定用户的家目录
    cd -                            # 回到上一次工作目录
pwd
  • 概念:显示当前工作目录的绝对路径

  • 示例

    bash 复制代码
    pwd                             # 输出当前目录路径
mkdir
  • 概念:创建目录

  • 示例

    bash 复制代码
    mkdir newdir                    # 创建单个目录
    mkdir -p dir1/dir2/dir3         # 创建多级目录(父目录不存在则自动创建)
    mkdir -m 755 secure_dir         # 创建指定权限的目录
rmdir
  • 概念:删除空目录(非空目录需用rm -r)

  • 示例

    bash 复制代码
    rmdir emptydir                  # 删除空目录
    rmdir -p dir1/dir2              # 删除多级空目录

权限管理

chmod
  • 概念︰修改文件/目录权限

  • 示例

    bash 复制代码
    chmod u+x file.sh               # 给所有者添加执行权限
    chmod g+w file.txt              # 给所属组添加写权限
    chmod o-r file.txt              # 移除其他用户的读权限
    chmod 755 file.sh               # 数字模式:rwxr-xr-x
    chmod -R 770 dir/               # 递归修改目录及其内容权限
    chmod u+s /usr/bin/program      # 设置SUID权限
chown
  • 概念:修改文件/目录的所有者和所属组

  • 示例

    bash 复制代码
    chown user file.txt             # 修改所有者
    chown user:group file.txt       # 修改所有者和所属组
    chown -R user:group dir/        # 递归修改目录
    chown :group file.txt           # 只修改所属组
chgrp
  • 概念:修改文件/目录的所属组(chown的简化版)

  • 示例

    bash 复制代码
    chgrp group file.txt            # 修改所属组  
    chgrp -R group dir/             # 递归修改目录所属组

2. 系统管理

用户管理

useradd
  • 概念:创建新用户

  • 示例

    bash 复制代码
    useradd -m username             # 创建用户并自动创建家目录
    useradd -s /bin/bash username   # 指定登录shell
    useradd -G group1,group2 username  # 添加用户到多个附加组
    useradd -d /home/custom username  # 指定自定义家目录
userdel
  • 概念:删除用户

  • 示例

    bash 复制代码
    userdel username                # 删除用户(保留家目录)
    userdel -r username             # 删除用户及家目录
usermod
  • 概念:修改用户属性

  • 示例

    bash 复制代码
    usermod -l newname oldname      # 修改用户名
    usermod -aG group username      # 添加用户到附加组(不删除现有组)
    usermod -d /new/home username   # 修改家目录
    usermod -L username             # 锁定用户账号
    usermod -U username             # 解锁用户账号
passwd
  • 概念:修改用户密码

  • 示例

    bash 复制代码
    passwd username                 # 修改指定用户密码(需root权限)
    passwd                          # 修改当前用户密码
    passwd -l username              # 锁定用户密码
    passwd -u username              # 解锁用户密码
    passwd -d username              # 删除用户密码(允许空密码登录,不推荐)
groupadd/groupdel
  • 概念:创建/删除用户组

  • 示例

    bash 复制代码
    groupadd groupname              # 创建组
    groupadd -g 1001 groupname      # 指定GID创建组
    groupdel groupname              # 删除组
su/sudo
  • 概念:切换用户身份/以超级用户权限执行命令

  • 示例

    bash 复制代码
    su - root                       # 切换到root用户(带环境变量)
    su username                     # 切换到普通用户  
    sudo command                    # 以root权限执行单个命令
    sudo -i                         # 切换到root shell
    sudo visudo                     # 安全编辑sudoers文件

service管理

systemctl
  • 概念:管理systemd服务(CentOS 7+)

  • 示例

    bash 复制代码
    sudo systemctl start httpd      # 启动服务
    sudo systemctl stop httpd       # 停止服务
    sudo systemctl restart httpd    # 重启服务
    sudo systemctl reload httpd     # 重载配置(不中断服务)
    sudo systemctl enable httpd     # 设置开机自启
    sudo systemctl disable httpd    # 禁止开机自启
    systemctl status httpd          # 查看服务状态
    systemctl list-unit-files --type=service  # 列出所有服务状态
    systemctl is-active httpd       # 检查服务是否活跃
service
  • 概念:管理SysV服务(兼容旧版本CentOS)

  • 示例

    bash 复制代码
    sudo service httpd start        # 启动服务
    sudo service httpd stop         # 停止服务
    sudo service httpd restart      # 重启服务
    sudo service httpd status       # 查看服务状态

进程管理

ps
  • 概念:查看进程状态

  • 示例

    bash 复制代码
    ps aux                          # 查看所有进程详细信息
    ps aux | grep "nginx"           # 查找特定进程
    ps -ef                          # 显示进程树(父进程关系)
    ps -eo pid,ppid,cmd             # 自定义输出字段
    ps aux --sort=-%cpu | head      # 按CPU使用率排序前10
top/htop
  • 概念:实时监控系统进程和资源占用

  • 示例

    bash 复制代码
    top                             # 基本实时监控(按q退出)
    top -p 1234                     # 监控指定PID的进程
    htop                            # 增强版top(需安装,支持鼠标操作)
    # top交互命令:P(CPU排序)、M(内存排序)、N(PID排序)、k(终止进程)
kill/pkill
  • 概念:终止进程

  • 示例

    bash 复制代码
    kill 1234                       # 发送SIGTERM信号终止进程
    kill -9 1234                    # 发送SIGKILL信号强制终止进程
    kill -HUP 1234                  # 发送SIGHUP信号重载配置
    pkill nginx                     # 终止所有nginx进程
    killall httpd                   # 终止所有httpd进程
pstree
  • 概念:以树状图显示进程关系

  • 示例

    bash 复制代码
    pstree                          # 显示简单进程树
    pstree -p                       # 显示进程PID
    pstree -u                       # 显示进程所属用户
    pstree nginx                    # 显示特定进程的树状结构
jobs/bg/fg
  • 概念:管理后台任务

  • 示例

    bash 复制代码
    jobs                            # 查看后台任务
    command &                       # 将命令放入后台执行
    bg %1                           # 将任务1放到后台运行
    fg %1                           # 将任务1调回前台
    Ctrl+Z                          # 暂停当前前台任务

3. 网络管理

网络配置

ip
  • 概念:查看/配置网络接口(替代ifconfig)

  • 示例

    bash 复制代码
    ip addr                         # 查看所有网络接口信息
    ip addr show eth0               # 查看指定接口
    ip addr add 192.168.1.100/24 dev eth0  # 添加IP地址
    ip addr del 192.168.1.100/24 dev eth0  # 删除IP地址
    ip link set eth0 up/down        # 启用/禁用接口
    ip route                        # 查看路由表
    ip route add default via 192.168.1.1  # 添加默认网关
ifconfig
  • 概念:查看/配置网络接口(传统命令)

  • 示例

    bash 复制代码
    ifconfig                        # 查看所有活动接口
    ifconfig eth0                   # 查看指定接口
    ifconfig eth0 192.168.1.100 netmask 255.255.255.0  # 设置IP和子网掩码
    ifconfig eth0 up/down           # 启用/禁用接口
netstat/ss
  • 概念:查看网络连接状态

  • 示例

    bash 复制代码
    netstat -tuln                   # 显示监听的TCP/UDP端口
    netstat -an                     # 显示所有连接
    netstat -p                      # 显示进程PID和名称(需root)
    ss -tuln                        # 现代版netstat,更快
    ss -o state established '( dport = :80 or sport = :80 )'  # 过滤80端口连接
hostname/hostnamectl
  • 概念:查看/设置主机名

  • 示例

    bash 复制代码
    hostname                        # 查看主机名
    hostnamectl set-hostname newhostname  # 设置主机名(永久生效)
    hostnamectl                     # 查看详细主机信息

网络测试

ping
  • 概念:测试网络连通性

  • 示例

    bash 复制代码
    ping google.com                 # 测试到google.com的连通性
    ping -c 4 192.168.1.1           # 发送4个ICMP包后停止
    ping -i 2 -c 10 192.168.1.1     # 每2秒发送一个,共10个
traceroute/mtr
  • 概念:跟踪数据包路径

  • 示例

    bash 复制代码
    traceroute google.com           # 跟踪到目标的路由路径
    mtr google.com                  # 结合ping和traceroute的持续监控工具
curl/wget
  • 概念:HTTP客户端/文件下载工具

  • 示例

    bash 复制代码
    curl http://example.com         # 获取网页内容
    curl -I http://example.com      # 只获取HTTP头信息
    curl -O http://example.com/file.iso  # 下载文件
    wget http://example.com/file.iso     # 下载文件
    wget -c http://example.com/file.iso  # 断点续传
ssh/scp/sftp
  • 概念:远程登录/文件传输

  • 示例

    bash 复制代码
    ssh username@remote_host        # 远程登录
    ssh -p 2222 username@host       # 指定端口登录
    scp file.txt username@host:/path/  # 本地文件复制到远程
    scp username@host:/path/file.txt .  # 远程文件复制到本地
    scp -r dir/ username@host:/path/    # 递归复制目录
    sftp username@host              # SFTP交互式文件传输

防火墙管理

firewall-cmd
  • 概念:firewalld防火墙管理工具(CentOS 7+)

  • 示例

    bash 复制代码
    sudo firewall-cmd --state       # 查看防火墙状态
    sudo firewall-cmd --list-ports  # 查看开放端口
    sudo firewall-cmd --add-port=80/tcp --permanent  # 永久开放80端口
    sudo firewall-cmd --remove-port=80/tcp --permanent  # 永久关闭80端口
    sudo firewall-cmd --reload      # 重新加载规则使其生效
    sudo firewall-cmd --zone=public --add-service=http --permanent  # 开放HTTP服务
iptables
  • 概念:传统防火墙管理工具

  • 示例

    bash 复制代码
    sudo iptables -L                # 查看规则
    sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT  # 允许80端口入站
    sudo iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT  # 允许特定网段
    sudo iptables-save > /etc/sysconfig/iptables  # 保存规则

4. 存储管理

磁盘信息

df
  • 概念:查看磁盘空间使用情况

  • 示例

    bash 复制代码
    df -h                           # 人类可读格式显示
    df -i                           # 显示inode使用情况
    df -T                           # 显示文件系统类型
    df /dev/sda1                    # 查看指定分区
du
  • 概念:查看目录/文件大小

  • 示例

    bash 复制代码
    du -sh /path/to/dir             # 显示目录总大小(人类可读)
    du -h --max-depth=1 /path       # 显示一级子目录大小
    du -ah /path                    # 显示所有文件和目录大小
    du -c file1 file2               # 显示多个文件总大小
lsblk
  • 概念:列出块设备信息

  • 示例

    bash 复制代码
    lsblk                           # 显示所有块设备
    lsblk -f                        # 显示文件系统信息
    lsblk -o NAME,SIZE,TYPE,MOUNTPOINT  # 自定义输出字段
fdisk/parted
  • 概念:磁盘分区工具

  • 示例

    bash 复制代码
    sudo fdisk -l                   # 列出所有磁盘分区
    sudo fdisk /dev/sdb             # 交互式分区/dev/sdb
    sudo parted /dev/sdb            # 高级分区工具(支持GPT)

挂载管理

mount/umount
  • 概念:挂载/卸载文件系统

  • 示例

    bash 复制代码
    mount /dev/sdb1 /mnt/data       # 挂载分区到/mnt/data
    mount -t ext4 /dev/sdb1 /mnt/data  # 指定文件系统类型
    mount -o ro /dev/sdb1 /mnt/data  # 只读挂载
    umount /mnt/data                # 卸载分区
    umount -l /mnt/data             # 强制卸载(当文件被占用时)
    mount -a                        # 挂载/etc/fstab中所有文件系统
/etc/fstab
  • 概念:文件系统表,定义开机自动挂载项

  • 示例配置

    bash 复制代码
    # 设备        挂载点    类型   选项       备份 检查
    /dev/sdb1     /mnt/data ext4   defaults    0    2
    UUID=xxx      /boot     xfs    defaults    0    1
  • 操作命令

    bash 复制代码
    sudo blkid                      # 获取设备UUID
    sudo vim /etc/fstab             # 编辑fstab文件
    mount -a                        # 测试fstab配置是否正确

LVM管理

  • 概念:逻辑卷管理,灵活管理磁盘空间

  • 示例

    bash 复制代码
    # 创建物理卷
    sudo pvcreate /dev/sdb1 /dev/sdc1
    # 创建卷组
    sudo vgcreate vg_data /dev/sdb1 /dev/sdc1
    # 创建逻辑卷
    sudo lvcreate -L 100G -n lv_data vg_data
    # 格式化逻辑卷
    sudo mkfs.ext4 /dev/vg_data/lv_data
    # 扩展逻辑卷
    sudo lvextend -L +50G /dev/vg_data/lv_data
    sudo resize2fs /dev/vg_data/lv_data  # ext4文件系统扩容

5. 包管理

yum/dnf

  • 概念:RPM包管理工具(dnf是yum的下一代)

  • 示例

    bash 复制代码
    # 安装软件包
    sudo yum install nginx
    sudo dnf install nginx          # CentOS 8+推荐使用dnf
    
    # 卸载软件包
    sudo yum remove nginx
    sudo dnf remove nginx
    
    # 更新软件包
    sudo yum update                 # 更新所有包
    sudo yum update nginx           # 更新指定包
    sudo yum upgrade                # 升级系统
    
    # 搜索软件包
    yum search "web server"
    dnf search nginx
    
    # 查看包信息
    yum info nginx
    dnf info nginx
    
    # 列出已安装包
    yum list installed
    dnf list installed | grep nginx
    
    # 清理缓存
    sudo yum clean all
    sudo dnf clean all
    
    # 重建缓存
    sudo yum makecache
    sudo dnf makecache

rpm

  • 概念:直接操作RPM包的底层工具

  • 示例

    bash 复制代码
    rpm -ivh package.rpm            # 安装RPM包
    rpm -Uvh package.rpm            # 升级RPM包
    rpm -e package                  # 卸载RPM包
    rpm -qa                         # 列出所有已安装RPM包
    rpm -qa | grep nginx            # 查找特定包
    rpm -ql package                 # 列出包安装的文件
    rpm -qf /usr/bin/nginx          # 查看文件属于哪个包

6. 日志管理

日志文件位置

  • /var/log/messages:系统通用日志
  • /var/log/secure:安全相关日志(SSH登录等)
  • /var/log/httpd/:Apache日志
  • /var/log/nginx/:Nginx日志
  • /var/log/mysql/:MySQL日志
  • /var/log/cron:定时任务日志

日志查看命令

tail/journalctl
  • 示例

    bash 复制代码
    tail -f /var/log/messages       # 实时查看系统日志
    tail -n 100 /var/log/secure     # 查看最近100行安全日志
    
    # systemd日志(CentOS 7+)
    journalctl                      # 查看所有日志
    journalctl -u nginx             # 查看特定服务日志
    journalctl -f                   # 实时跟踪日志
    journalctl --since "1 hour ago" # 查看1小时前至今的日志
    journalctl --until "2023-12-31" # 查看截止到指定日期的日志
    journalctl -k                   # 查看内核日志
grep/awk在日志分析中的应用
  • 示例

    bash 复制代码
    # 查找包含"error"的日志行
    grep "error" /var/log/messages
    
    # 统计特定IP的访问次数
    grep "192.168.1.100" /var/log/httpd/access.log | wc -l
    
    # 提取访问状态码为404的请求
    awk '$9 == 404 {print $0}' /var/log/httpd/access.log
    
    # 统计不同状态码的数量
    awk '{print $9}' /var/log/httpd/access.log | sort | uniq -c
logrotate
  • 概念:日志轮转工具,防止日志文件过大

  • 配置文件位置/etc/logrotate.conf/etc/logrotate.d/

  • 示例配置/etc/logrotate.d/nginx):

    复制代码
    /var/log/nginx/*.log {
        daily
        missingok
        rotate 14
        compress
        delaycompress
        notifempty
        create 0640 nginx nginx
        sharedscripts
        postrotate
            /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
        endscript
    }

7. 性能监控

CPU监控

top/htop/mpstat
  • 示例

    bash 复制代码
    top -o %CPU                     # 按CPU使用率排序
    mpstat -P ALL 2                 # 每2秒显示所有CPU核心使用情况
    sar -u 1 5                      # 每1秒采样一次CPU,共5次(需安装sysstat)

内存监控

free/vmstat
  • 示例

    bash 复制代码
    free -h                         # 人类可读格式显示内存使用
    free -m                         # 以MB为单位显示
    vmstat 2                        # 每2秒显示内存和系统状态
    vmstat -s                       # 显示内存统计摘要

磁盘I/O监控

iostat/iotop
  • 示例

    bash 复制代码
    iostat -x 2                     # 每2秒显示详细I/O统计
    iostat -p sda 2                 # 监控指定磁盘
    iotop                           # 实时监控进程I/O(需安装,按q退出)

网络监控

iftop/nload
  • 示例

    bash 复制代码
    sudo iftop -i eth0              # 监控eth0接口带宽
    sudo nload                      # 实时监控网络流量(分上传/下载)

8. 文本处理

文本查看/编辑

vi/vim
  • 概念:强大的文本编辑器

  • 常用操作

    bash 复制代码
    vim file.txt                    # 打开文件
    # 编辑模式:按i进入插入模式
    # 保存退出:Esc -> :wq -> 回车
    # 不保存退出:Esc -> :q! -> 回车
    # 查找:/pattern -> 回车(n下一个,N上一个)
    # 替换::%s/old/new/g -> 回车(全局替换)
nano
  • 概念:简单易用的文本编辑器

  • 示例

    bash 复制代码
    nano file.txt                   # 打开文件(底部有操作提示)
    # Ctrl+O保存,Ctrl+X退出,Ctrl+W搜索

文本搜索与过滤

grep/egrep
  • 概念:在文件中搜索指定模式的文本

  • 示例

    bash 复制代码
    grep "error" file.log           # 搜索包含"error"的行
    grep -i "Error" file.log        # 忽略大小写
    grep -n "error" file.log        # 显示行号
    grep -r "error" /var/log/       # 递归搜索目录
    grep -v "info" file.log         # 排除包含"info"的行
    grep -E "error|warning" file.log # 搜索多个模式(egrep等价)
sed
  • 概念:流编辑器,用于文本替换和处理

  • 示例

    bash 复制代码
    sed 's/old/new/g' file.txt      # 全局替换old为new(不修改原文件)
    sed -i 's/old/new/g' file.txt   # 直接修改原文件
    sed '/^#/d' file.txt            # 删除注释行(以#开头的行)
    sed '10d' file.txt              # 删除第10行
    sed -n '5,10p' file.txt         # 只显示第5-10行
awk
  • 概念:文本处理语言,用于数据提取和报告

  • 示例

    bash 复制代码
    awk '{print $1, $3}' data.txt   # 打印第1和第3列
    awk -F: '{print $1}' /etc/passwd  # 以:为分隔符,打印第1列(用户名)
    awk '$3 > 1000 {print $0}' /etc/passwd  # 第3列(UID)大于1000的行
    awk '{sum += $2} END {print sum}' data.txt  # 计算第2列的总和

文本处理工具链

cut/sort/uniq/wc
  • 示例

    bash 复制代码
    # 提取第1列,排序,去重,统计数量
    cut -d: -f1 /etc/passwd | sort | uniq | wc -l
    
    # 统计访问日志中IP出现次数并排序
    awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10
    
    # 查找占用空间最大的前10个文件
    du -ah /path | sort -rh | head -10

9. 实用技巧

命令别名

  • 概念:为常用命令创建简短别名

  • 示例

    bash 复制代码
    alias ll='ls -lha'              # 临时别名(当前shell有效)
    alias grep='grep --color=auto'  # 彩色显示grep结果
    
    # 永久别名(添加到~/.bashrc或~/.bash_profile)
    echo "alias ll='ls -lha'" >> ~/.bashrc
    source ~/.bashrc                # 使别名立即生效

管道与重定向

  • 概念:将命令连接起来或重定向输入输出

  • 示例

    bash 复制代码
    # 管道:将前一个命令输出作为后一个命令输入
    ps aux | grep nginx | wc -l     #统计nginx进程数
    
    # 重定向:>覆盖,>>追加
    command > output.txt            # 标准输出重定向到文件
    command >> output.txt           # 追加到文件
    command 2> error.txt            # 错误输出重定向
    command &> all_output.txt       # 所有输出重定向
    command < input.txt             # 从文件读取输入
    
    # 组合使用
    grep "error" /var/log/* 2>/dev/null | tee errors.log  # 查找错误并保存到文件同时显示

后台任务与进程管理

  • 示例

    bash 复制代码
    # 后台运行命令
    nohup ./long_running_script.sh &  # 忽略挂断信号,后台运行
    nohup command > output.log 2>&1 & # 重定向输出到日志文件
    
    # 终端复用(screen/tmux)
    screen -S session1              # 创建会话
    screen -ls                      # 列出会话
    screen -r session1              # 恢复会话
    Ctrl+A+D                        # 分离会话
    
    tmux new -s session1            # 创建tmux会话
    tmux attach -t session1         # 恢复会话
    Ctrl+B+D                        # 分离tmux会话

文件查找与处理

find
  • 概念:强大的文件查找工具

  • 示例

    bash 复制代码
    find / -name "*.log"            # 按名称查找
    find /var -size +100M           # 查找大于100MB的文件
    find . -mtime -7                # 查找7天内修改的文件
    find . -type d -name ".git"     # 查找类型为目录且名称为.git的
    find / -user root -perm 600     # 查找所有者为root且权限为600的文件
    find . -name "*.txt" -exec rm {} \;  # 查找并删除.txt文件(谨慎使用)
    find . -name "*.tmp" -delete    # 查找并删除.tmp文件
locate
  • 概念:快速文件查找(基于数据库)

  • 示例

    bash 复制代码
    locate "*.log"                  # 快速查找.log文件
    sudo updatedb                   # 更新数据库(默认每天自动更新)
    locate -i "readme.md"           # 忽略大小写查找

压缩与解压

  • 示例

    bash 复制代码
    # tar
    tar -czvf archive.tar.gz dir/   # 打包并gzip压缩
    tar -xzvf archive.tar.gz        # 解压tar.gz
    tar -cjvf archive.tar.bz2 dir/  # 打包并bzip2压缩
    tar -xjvf archive.tar.bz2       # 解压tar.bz2
    
    # zip
    zip -r archive.zip dir/         # 创建zip压缩包
    unzip archive.zip               # 解压zip
    
    # gzip
    gzip file.txt                   # 压缩文件(生成file.txt.gz)
    gunzip file.txt.gz              # 解压gzip文件

系统信息查看

  • 示例

    bash 复制代码
    uname -a                        # 查看内核版本和系统信息
    cat /etc/redhat-release         # 查看CentOS版本
    lsb_release -a                  # 查看系统版本(需安装redhat-lsb)
    hostnamectl                     # 查看主机信息
    lscpu                           # 查看CPU信息
    free -h                         # 内存信息
    df -h                           # 磁盘信息
    uptime                          # 系统运行时间和负载

10. 附录

常用快捷键

快捷键 功能描述
Ctrl+C 终止当前命令
Ctrl+Z 暂停当前命令(可通过fg恢复)
Ctrl+D 退出当前shell(等价于exit)
Ctrl+L 清屏(等价于clear)
Ctrl+A 光标移到行首
Ctrl+E 光标移到行尾
Ctrl+U 删除光标前所有字符
Ctrl+K 删除光标后所有字符
Ctrl+W 删除光标前一个单词
Tab 自动补全命令或路径
Ctrl+R 搜索命令历史

通配符

通配符 含义
* 匹配任意字符序列(0个或多个)
? 匹配任意单个字符
[abc] 匹配a、b或c中的任意一个
[a-z] 匹配任意小写字母
[0-9] 匹配任意数字
[^abc] 匹配除a、b、c外的任意字符
{file1,file2} 匹配file1或file2

特殊符号

符号 含义
~ 当前用户家目录
. 当前目录
... 父目录
/ 根目录
$VAR 引用变量VAR的值
# 注释符号(一行中#后的内容被忽略)
& 将命令放入后台执行
; 分隔多个命令,顺序执行
&& 逻辑与,前一个命令成功才执行后一个
|| 逻辑或,前一个命令失败才执行后一个
| 管道,将前一个命令输出作为后一个命令输入
> 输出重定向(覆盖)
>> 输出重定向(追加)
< 输入重定向
2> 错误输出重定向
* 通配符,匹配任意字符序列
文件操作扩展
rename
  • 概念:批量重命名文件,支持字符串替换

  • 示例

    bash 复制代码
    rename 's/old/new/' *.txt      # 将所有.txt文件中的"old"替换为"new"
    rename 'y/A-Z/a-z/' *.TXT      # 将所有.TXT文件转为小写后缀
tree
  • 概念:以树状图显示目录结构

  • 示例

    bash 复制代码
    tree                            # 显示当前目录树
    tree -L 2                       # 限制显示深度为2级
    tree -d                         # 只显示目录
chattr/lsattr
  • 概念:修改/查看文件扩展属性(如防删除、只读)

  • 示例

    bash 复制代码
    chattr +i important.txt         # 设置文件不可修改、删除
    chattr -i important.txt         # 取消不可修改属性
    lsattr important.txt            # 查看文件扩展属性
basename/dirname
  • 概念:提取文件名或目录名

  • 示例

    bash 复制代码
    basename /path/to/file.txt      # 输出:file.txt
    dirname /path/to/file.txt       # 输出:/path/to
文本处理扩展
rev
  • 概念:反转文件内容的每行字符

  • 示例

    bash 复制代码
    rev file.txt                    # 反转显示file.txt内容
    echo "hello" | rev              # 输出:olleh
iconv/dos2unix
  • 概念:文件编码转换/Windows换行符转Unix

  • 示例

    bash 复制代码
    iconv -f GBK -t UTF-8 input.txt > output.txt  # GBK转UTF-8
    dos2unix winfile.txt            # 将CRLF转换为LF格式
vimdiff
  • 概念:可视化文件比较工具

  • 示例

    bash 复制代码
    vimdiff file1.txt file2.txt     # 分屏显示两个文件差异
系统监控高级命令
dmesg
  • 概念:查看内核启动信息和硬件诊断

  • 示例

    bash 复制代码
    dmesg | grep -i error           # 查找内核错误信息
    dmesg | less                    # 分页查看所有启动信息
sar
  • 概念:系统活动报告,收集历史性能数据

  • 示例

    bash 复制代码
    sar -u 5 3                      # 每5秒采样一次CPU,共3次
    sar -r 1 5                      # 监控内存使用
    sar -n DEV 2                    # 监控网络接口流量
strace/ltrace
  • 概念:跟踪进程系统调用/库函数调用

  • 示例

    bash 复制代码
    strace -p 1234                  # 跟踪PID 1234的系统调用
    ltrace ls                       # 跟踪ls命令的库函数调用
网络诊断工具
nmap
  • 概念:网络端口扫描和服务探测

  • 示例

    bash 复制代码
    nmap 192.168.1.1                # 扫描目标主机开放端口
    nmap -p 1-1000 192.168.1.1      # 扫描指定端口范围
    nmap -sV 192.168.1.1            # 探测服务版本
tcpdump
  • 概念:网络抓包工具,分析网络流量

  • 示例

    bash 复制代码
    tcpdump -i eth0 port 80         # 抓取eth0上80端口流量
    tcpdump -w capture.pcap         # 保存抓包到文件
    tcpdump -r capture.pcap         # 读取保存的抓包文件
磁盘管理高级命令
parted
  • 概念:支持GPT分区的磁盘分区工具(大于2TB磁盘)

  • 示例

    bash 复制代码
    parted /dev/sdb                 # 交互式分区/dev/sdb
    parted -s /dev/sdb mklabel gpt  # 非交互式创建GPT标签
    parted -s /dev/sdb mkpart primary 0% 100%  # 创建整个磁盘分区
swapon/swapoff
  • 概念:启用/关闭交换分区

  • 示例

    bash 复制代码
    swapon /dev/sdb1                # 启用交换分区
    swapon -s                       # 查看所有活动交换分区
    swapoff /dev/sdb1               # 关闭交换分区
实用工具
watch
  • 概念:周期性执行命令并全屏显示结果

  • 示例

    bash 复制代码
    watch -n 1 'df -h'              # 每秒刷新磁盘使用情况
    watch -d 'ls -l'                # 高亮显示文件变化
bc
  • 概念:高精度计算器工具

  • 示例

    bash 复制代码
    bc -l                           # 启动交互式计算器(-l加载数学库)
    echo "2^32" | bc                # 计算2的32次方
    echo "scale=2; 10/3" | bc       # 设置小数位数计算除法
type
  • 概念:判断命令类型(内置/外部/别名)

  • 示例

    bash 复制代码
    type cd                         # 显示cd是shell内置命令
    type ls                         # 显示ls是别名或外部命令路径
    type -t python                  # 仅显示类型(alias/builtin/file)
SELinux管理
getenforce/setenforce
  • 概念:查看/临时切换SELinux模式

  • 示例

    bash 复制代码
    getenforce                      # 查看当前模式(Enforcing/Permissive/Disabled)
    setenforce 0                    # 临时切换到Permissive模式
    setenforce 1                    # 切换回Enforcing模式
永久修改SELinux配置
  • 概念:通过配置文件修改SELinux模式

  • 示例

    bash 复制代码
    sudo vim /etc/selinux/config   # 修改配置文件
    # 设置SELINUX=disabled 禁用SELinux(需重启)
文件上传下载工具
sz/rz
  • 概念:基于ZModem协议的文件传输工具

  • 示例

    bash 复制代码
    yum install -y lrzsz            # 安装lrzsz工具
    sz filename                     # 下载文件到本地
    rz                              # 上传本地文件到服务器(弹出文件选择窗口)
curl高级用法
REST API交互
  • 概念:使用curl发送HTTP请求测试API

  • 示例

    bash 复制代码
    # POST请求
    curl -H "Content-Type: application/json" -X POST -d '{"name":"test"}' http://api.example.com
    # GET请求带参数
    curl "http://api.example.com/data?param1=value1&param2=value2"
    # 带认证信息
    curl -u username:password http://api.example.com
文件下载与限速
  • 示例

    bash 复制代码
    curl -O http://example.com/file.iso  # 下载文件
    curl --limit-rate 100k http://example.com/largefile.iso  # 限速100KB/s
进程管理高级命令
pgrep/pkill
  • 概念:通过进程名查找/终止进程

  • 示例

    bash 复制代码
    pgrep nginx                     # 查找nginx进程PID
    pkill -9 nginx                  # 终止所有nginx进程
    pgrep -u root                   # 查找root用户的进程
ipcs/ipcrm
  • 概念:管理进程间通信(IPC)资源

  • 示例

    bash 复制代码
    ipcs -m                         # 显示共享内存
    ipcs -s                         # 显示信号量
    ipcrm -m shmid                  # 删除指定ID的共享内存
    ```## 11. 系统安装与编译

包管理差异(CentOS vs Ubuntu)

RPM包管理(CentOS)
  • 概念:RedHat系系统的包管理工具

  • 示例

    bash 复制代码
    # 安装RPM包
    rpm -ivh package.rpm
    # 升级RPM包
    rpm -Uvh package.rpm
    # 卸载RPM包
    rpm -e package
    # 查询已安装包
    rpm -qa | grep package
DPKG包管理(Ubuntu)
  • 概念:Debian系系统的包管理工具

  • 示例

    bash 复制代码
    # 安装DEB包
    dpkg -i package.deb
    # 卸载DEB包
    dpkg -r package
    # 查看包信息
    dpkg -s package
    # 列出包内容
    dpkg -L package
源码编译安装
  • 概念:从源码编译安装软件的通用流程

  • 示例

    bash 复制代码
    # 安装编译工具(CentOS)
    yum groupinstall "Development Tools" -y
    
    # 安装编译工具(Ubuntu)
    apt install build-essential -y
    
    # 通用编译流程
    wget https://example.com/source.tar.gz
    tar -zxvf source.tar.gz
    cd source-dir
    ./configure --prefix=/usr/local/app
    make
    make install

12. 在线下载工具

wget高级用法

  • 概念:功能强大的命令行下载工具

  • 示例

    bash 复制代码
    # 断点续传
    wget -c https://example.com/largefile.iso
    
    # 后台下载
    wget -b https://example.com/file.tar.gz
    
    # 限速下载
    wget --limit-rate=200k https://example.com/file.zip
    
    # 指定User-Agent
    wget -U "Mozilla/5.0" https://example.com

curl高级用法

  • 概念:支持多种协议的URL传输工具

  • 示例

    bash 复制代码
    # 下载文件并重命名
    curl -o newname.zip https://example.com/file.zip
    
    # 跟随重定向
    curl -L https://example.com/redirect
    
    # 发送表单数据
    curl -d "username=admin&password=123" https://example.com/login
    
    # 带Cookie请求
    curl -b "sessionid=xxx" https://example.com/profile

axel多线程下载

  • 概念:多线程下载工具,加速下载速度

  • 示例

    bash 复制代码
    # 安装(CentOS)
    yum install axel -y
    
    # 安装(Ubuntu)
    apt install axel -y
    
    # 使用10线程下载
    axel -n 10 https://example.com/largefile.iso

13. 压缩解压大全

支持多种格式的压缩解压命令

格式 压缩命令 解压命令
.tar tar -cvf file.tar dir/ tar -xvf file.tar
.tar.gz tar -czvf file.tar.gz dir/ tar -xzvf file.tar.gz
.tar.bz2 tar -cjvf file.tar.bz2 dir/ tar -xjvf file.tar.bz2
.tar.xz tar -cJvf file.tar.xz dir/ tar -xJvf file.tar.xz
.zip zip -r file.zip dir/ unzip file.zip
.rar rar a file.rar dir/ rar x file.rar
.7z 7z a file.7z dir/ 7z x file.7z

安装额外压缩工具

bash 复制代码
# 安装rar(CentOS)
wget https://www.rarlab.com/rar/rarlinux-x64.tar.gz
tar -zxvf rarlinux-x64.tar.gz
cd rar
make install

# 安装p7zip(Ubuntu)
apt install p7zip-full -y

# 安装p7zip(CentOS)
yum install p7zip p7zip-plugins -y

高级压缩示例

bash 复制代码
# 压缩时排除特定文件
tar --exclude=*.log -czvf backup.tar.gz /data

# 分卷压缩
split -b 100M largefile.tar.gz "largefile.part-"

# 合并分卷并解压
cat largefile.part-* | tar -xzvf -

14. 性能监控高级命令

系统性能综合监控

sar详细用法
  • 概念:系统活动报告工具,收集和报告系统活动

  • 示例

    bash 复制代码
    # 安装sysstat(包含sar)
    yum install sysstat -y  # CentOS
    apt install sysstat -y  # Ubuntu
    
    # 监控CPU使用率(每5秒一次,共3次)
    sar -u 5 3
    
    # 监控内存使用
    sar -r 1 5
    
    # 监控磁盘I/O
    sar -b 2 10
    
    # 监控网络流量
    sar -n DEV 1 5

Java内存监控工具

JDK自带工具
  • 概念:JDK提供的Java进程监控工具集

  • 示例

    bash 复制代码
    # 查看Java进程
    jps -l
    
    # 查看JVM内存使用
    jstat -gc 12345 5000 10  # PID 12345,每5秒一次,共10次
    
    # 生成堆转储文件
    jmap -dump:format=b,file=heapdump.hprof 12345
    
    # 查看线程状态
    jstack 12345 > threaddump.txt
    
    # 查看JVM参数
    jinfo -flags 12345
第三方Java监控工具
bash 复制代码
# 安装jconsole(图形化,需X11转发)
yum install java-1.8.0-openjdk-devel -y  # 包含jconsole

# 安装arthas(阿里开源Java诊断工具)
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar  # 交互式选择进程

15. Ubuntu与CentOS命令差异对比

包管理差异

操作 CentOS Ubuntu
更新源 yum update apt update
安装包 yum install pkg apt install pkg
卸载包 yum remove pkg apt remove pkg
搜索包 yum search pkg apt search pkg
清理缓存 yum clean all apt clean

服务管理差异

操作 CentOS Ubuntu
启动服务 systemctl start service systemctl start service
停止服务 systemctl stop service systemctl stop service
开机启动 systemctl enable service systemctl enable service
查看状态 systemctl status service systemctl status service
服务列表 systemctl list-unit-files systemctl list-unit-files

防火墙差异

操作 CentOS (firewalld) Ubuntu (ufw)
查看状态 firewall-cmd --state ufw status
启用 systemctl enable --now firewalld ufw enable
开放端口 firewall-cmd --add-port=80/tcp --permanent ufw allow 80/tcp
关闭端口 firewall-cmd --remove-port=80/tcp --permanent ufw deny 80/tcp
重载规则 firewall-cmd --reload ufw reload

16. iptables详细操作

基础规则管理

  • 概念:Linux内核防火墙,通过规则链过滤网络流量

  • 示例

    bash 复制代码
    # 查看所有规则
    iptables -L -n --line-numbers
    
    # 清空所有规则
    iptables -F
    
    # 保存规则(CentOS)
    service iptables save
    # 保存规则(Ubuntu)
    iptables-save > /etc/iptables/rules.v4
    
    # 恢复规则(Ubuntu)
    iptables-restore < /etc/iptables/rules.v4

常用规则配置

bash 复制代码
# 允许SSH连接
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许HTTP和HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT

# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 阻止特定IP
iptables -A INPUT -s 192.168.1.100 -j DROP

# 端口转发(将80端口转发到8080)
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

规则持久化

bash 复制代码
# CentOS持久化
yum install iptables-services -y
systemctl enable iptables
service iptables save

# Ubuntu持久化
apt install iptables-persistent -y
netfilter-persistent save
netfilter-persistent reload

17. 进程管理高级操作

进程查找与过滤

  • 概念:根据不同条件查找进程

  • 示例

    bash 复制代码
    # 按名称查找进程
    pgrep nginx
    ps aux | grep nginx
    
    # 按端口查找进程
    lsof -i:8080
    netstat -tulnlp | grep 8080
    ss -tulnlp | grep 8080
    
    # 按用户查找进程
    ps -u root
    
    # 按CPU/内存使用率排序
    ps aux --sort=-%cpu | head -10  # CPU最高的10个进程
    ps aux --sort=-%mem | head -10  # 内存最高的10个进程

进程终止操作

  • 概念:终止进程的不同方式和信号

  • 示例

    bash 复制代码
    # 正常终止(SIGTERM - 15)
    kill 1234
    
    # 强制终止(SIGKILL - 9)
    kill -9 1234
    
    # 重启进程(SIGHUP - 1)
    kill -1 1234
    
    # 终止指定名称的所有进程
    pkill nginx
    killall nginx
    
    # 终止占用端口的进程
    fuser -k 8080/tcp

端口占用解决完整流程

bash 复制代码
# 1. 查找占用端口的进程
lsof -i:8080
# 或
netstat -tulnlp | grep 8080

# 2. 终止进程(假设PID为1234)
kill -9 1234

# 3. 强制释放端口(如果kill后端口仍被占用)
fuser -k 8080/tcp

# 4. 验证端口是否释放
ss -tuln | grep 8080

18. 线上问题排查方法论

系统资源瓶颈排查

CPU瓶颈
bash 复制代码
# 查看CPU使用率
top  # 按P排序
htop  # 更直观的CPU使用展示

# 查看每个CPU核心的使用情况
mpstat -P ALL 1

# 查看进程线程CPU占用
ps -Lp 1234 -o %cpu,pid,tid,comm  # 查看进程1234的线程CPU占用
内存瓶颈
bash 复制代码
# 查看内存使用概况
free -h
vmstat 1

# 查看进程内存占用
top  # 按M排序
ps aux --sort=-%mem | head -10

# 查看内存泄漏嫌疑
valgrind --leak-check=full ./program  # C程序内存泄漏检测
jmap -histo:live 1234  # Java进程对象统计
磁盘I/O瓶颈
bash 复制代码
# 查看磁盘I/O负载
iostat -x 1
iotop  # 按IO使用率排序进程

# 查看磁盘空间
df -h
du -sh /var/* | sort -rh  # 按大小排序目录

# 查找大文件
find / -type f -size +100M -exec du -h {} \;

网络问题排查

bash 复制代码
# 检查网络连接
netstat -an | grep ESTABLISHED  # 已建立连接
ss -ti  # TCP连接详情

# 抓包分析
tcpdump -i eth0 port 80 -w capture.pcap
tcpdump -r capture.pcap host 192.168.1.1

# 路由追踪
traceroute example.com
mtr example.com  # 结合ping和traceroute

# DNS排查
nslookup example.com
dig example.com
host example.com

日志分析技巧

bash 复制代码
# 实时跟踪日志
tail -f /var/log/application.log

# 查找错误日志
grep -i error /var/log/application.log
grep -iE "error|exception" /var/log/application.log

# 按时间范围过滤日志
sed -n '/2023-10-01 10:00:00/,/2023-10-01 11:00:00/p' /var/log/application.log

# 统计错误出现次数
grep -i error /var/log/application.log | wc -l

# 分析访问日志(按IP统计访问次数)
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

19. 防火墙完整操作指南

firewalld(CentOS)详细配置

bash 复制代码
# 安装与启动
yum install firewalld -y
systemctl enable --now firewalld

# 基本操作
firewall-cmd --state  # 查看状态
firewall-cmd --reload  # 重载规则
firewall-cmd --complete-reload  # 完全重启(中断连接)

# 管理端口
firewall-cmd --add-port=80/tcp --permanent  # 永久开放80端口
firewall-cmd --remove-port=80/tcp --permanent  # 永久关闭80端口
firewall-cmd --list-ports  # 查看开放端口

# 管理服务
firewall-cmd --add-service=http --permanent  # 开放HTTP服务
firewall-cmd --list-services  # 查看开放服务

# 端口转发
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.100:toport=8080 --permanent

# 区域管理
firewall-cmd --get-active-zones  # 查看活动区域
firewall-cmd --zone=public --add-interface=eth0 --permanent  # 接口加入区域

ufw(Ubuntu)详细配置

bash 复制代码
# 安装与启动
apt install ufw -y
ufw enable  # 启用防火墙
ufw disable  # 禁用防火墙

# 基本操作
ufw status verbose  # 详细状态
ufw reload  # 重载规则

# 管理端口
ufw allow 80/tcp  # 允许80/tcp
ufw deny 22/udp  # 拒绝22/udp
ufw delete allow 80/tcp  # 删除规则

# 管理服务
ufw allow ssh  # 允许SSH服务
ufw allow http  # 允许HTTP服务

# 高级规则(允许特定IP)
ufw allow from 192.168.1.0/24 to any port 3306
ufw deny from 10.0.0.1 to any

# 端口转发(需先启用ipv4转发)
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
sysctl -p
ufw route allow proto tcp from any to any port 8080 to 192.168.1.100 port 80

20. 常用服务运维命令

Redis运维

bash 复制代码
# 安装(CentOS)
yum install redis -y
systemctl enable --now redis

# 安装(Ubuntu)
apt install redis-server -y

# 基本操作
redis-cli ping  # 测试连接
redis-cli info  # 查看信息
redis-cli keys "*"  # 列出所有键
redis-cli get key  # 获取键值
redis-cli set key value  # 设置键值

# 持久化操作
redis-cli save  # 手动触发RDB持久化
redis-cli bgsave  # 后台执行RDB持久化
redis-cli config set appendonly yes  # 启用AOF

# 备份与恢复
cp /var/lib/redis/dump.rdb /backup/  # 备份RDB文件
redis-cli FLUSHALL  # 清空数据库(谨慎操作)
# 恢复:停止Redis,替换dump.rdb,启动Redis

# 集群管理
redis-cli --cluster create 192.168.1.1:6379 192.168.1.2:6379 ...
redis-cli --cluster info 192.168.1.1:6379

MySQL运维

bash 复制代码
# 安装(CentOS)
yum install mysql-server -y
systemctl enable --now mysqld

# 安装(Ubuntu)
apt install mysql-server -y

# 基本操作
mysql -u root -p  # 登录
mysqladmin -u root -p status  # 查看状态
mysql -e "show databases;"  # 执行SQL命令

# 备份与恢复
mysqldump -u root -p --all-databases > all_db_backup.sql  # 全库备份
mysqldump -u root -p dbname > dbname_backup.sql  # 单库备份
mysql -u root -p dbname < dbname_backup.sql  # 恢复数据库

# 主从复制配置
# 主库:
vi /etc/my.cnf
server-id=1
log_bin=mysql-bin
binlog_do_db=testdb

# 从库:
vi /etc/my.cnf
server-id=2
replicate_do_db=testdb

# 从库连接主库:
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;
SHOW SLAVE STATUS\G

Java项目部署与监控

bash 复制代码
# 运行Java项目
java -jar app.jar
nohup java -jar app.jar > app.log 2>&1 &  # 后台运行

# 设置JVM参数
java -Xms512m -Xmx1024m -jar app.jar

# 查看Java进程详细信息
jinfo -flags 1234  # 查看JVM参数
jstat -gcutil 1234 1000  # 每1秒输出GC信息

# 分析堆内存
jmap -heap 1234  # 查看堆配置及使用情况
jmap -dump:format=b,file=heap.hprof 1234  # 生成堆转储文件
jhat heap.hprof  # 启动堆分析服务器(访问7000端口)

# 查看线程状态
jstack 1234 > threads.txt
grep -A 10 "BLOCKED" threads.txt  # 查找阻塞线程

21. crontab定时任务完全指南

基本格式与语法

复制代码
* * * * * command
- - - - -
| | | | |
| | | | +----- 星期几 (0 - 6) (星期天=0或7)
| | | +------- 月份 (1 - 12)
| | +--------- 日期 (1 - 31)
| +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)

特殊符号用法

符号 含义 示例
* 所有值 * * * * * 每分钟
, 分隔多个值 0 8,18 * * * 每天8点和18点
- 范围 0 9-17 * * 1-5 工作日9到17点每小时
/ 间隔 */15 * * * * 每15分钟
@reboot 启动时 @reboot /script/start.sh
@daily 每天 @daily /script/backup.sh

常用示例

bash 复制代码
# 编辑定时任务
crontab -e

# 查看定时任务
crontab -l

# 删除定时任务
crontab -r

# 每分钟执行
*/1 * * * * /path/to/script.sh

# 每天凌晨3点执行
0 3 * * * /path/to/backup.sh

# 每周日23点执行
0 23 * * 0 /path/to/cleanup.sh

# 每月1号和15号中午12点执行
0 12 1,15 * * /path/to/report.sh

# 工作日8:00-18:00每小时执行
0 8-18 * * 1-5 /path/to/check.sh

# 每15分钟执行并输出日志
*/15 * * * * /path/to/script.sh >> /var/log/script.log 2>&1

定时任务管理与日志

bash 复制代码
# 查看cron服务状态
systemctl status crond  # CentOS
systemctl status cron   # Ubuntu

# 查看cron日志(CentOS)
tail -f /var/log/cron

# 查看cron日志(Ubuntu)
grep CRON /var/log/syslog

# 设置定时任务权限(限制用户)
vi /etc/cron.allow  # 仅允许文件中列出的用户使用crontab
vi /etc/cron.deny   # 禁止文件中列出的用户使用crontab

# 定时任务环境变量问题解决
# 在脚本中使用绝对路径或在crontab中定义PATH
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/1 * * * * /path/to/script.sh

22. 系统状态全面监控命令

系统运行状态

uptime详细解读
bash 复制代码
uptime
# 输出示例:15:45:30 up 2 days, 3:10, 2 users, load average: 0.88, 0.65, 0.50
# 解读:当前时间 运行时间 用户数 1/5/15分钟负载

# 查看更详细的启动时间
who -b
last reboot
系统信息综合查看
bash 复制代码
# 查看内核版本
uname -a
cat /proc/version

# 查看操作系统版本
cat /etc/redhat-release  # CentOS
cat /etc/lsb-release     # Ubuntu

# 查看硬件信息
lscpu  # CPU信息
lsmem  # 内存信息
lsblk  # 磁盘信息

# 查看系统资源概览
inxi -Fxz  # 需要安装:yum install inxi / apt install inxi

磁盘与文件系统

高级磁盘监控
bash 复制代码
# 查看磁盘I/O性能
iostat -x 1
iotop -oP  # 只显示有I/O活动的进程

# 文件系统详细信息
df -Th  # 显示文件系统类型
blkid   # 查看块设备UUID和类型

# 磁盘分区详情
fdisk -l /dev/sda
parted /dev/sda print

# 查找大文件和目录
du -Sh /var | sort -rh | head -10  # 目录大小排序
find / -type f -size +100M -print0 | xargs -0 du -h | sort -rh  # 大文件查找

网络状态深度分析

bash 复制代码
# 网络连接统计
ss -s  # 连接摘要
ss -tuln  # 监听TCP/UDP端口
ss -ti  # TCP连接详情(包含RTT信息)

# 网络流量实时监控
iftop -i eth0  # 按带宽排序
nload  # 分上下行显示流量

# 网络接口详细信息
ethtool eth0  # 链路状态、速度等
ip -s link show eth0  # 接口统计信息

# 路由表和ARP缓存
ip route show
arp -n
相关推荐
RIVOTEK_OPENVELA1 分钟前
OpenVela之 Arch Timer 驱动框架使用指南
linux·开源软件·iot
Lum110437 分钟前
MER-Factory:多模态情感识别与推理数据集自动化工厂工具介绍
运维·人工智能·深度学习·计算机视觉·语言模型·自然语言处理·自动化
longerxin202041 分钟前
在 CentOS 8 上彻底卸载 Kubernetes(k8s)
linux·kubernetes·centos
互联网搬砖老肖1 小时前
运维打铁: Shell 脚本自动化任务编写与优化
运维·自动化·ruby
阿竹.1 小时前
Linux运维新手的修炼手扎之第19天
linux·运维·服务器
不羁。。1 小时前
CentOS网络配置与LAMP环境搭建指南
linux
江东大都督周总1 小时前
springboot项目部署到K8S
运维·k8s
短尾黑猫1 小时前
【Fedora 42】Linux内核升级后,鼠标滚轮失灵,libinput的锅?
linux·运维·计算机外设
古井无波 20243 小时前
低精度定时器 (timer_list) 和 高精度定时器 (hrtimer)
linux
SMiLe3 小时前
使用PTP解决网络中多设备的时间同步问题
linux