Linux 业务场景常用命令详解

一、系统监控与性能分析

1. 系统资源监控

bash 复制代码
# 实时监控系统资源
top
htop       # 增强版top,需安装

# 查看系统负载
uptime
cat /proc/loadavg

# 内存监控
free -h
vmstat 2 5   # 每2秒采样,共5次

# CPU监控
mpstat -P ALL 1  # 每1秒查看所有CPU使用情况
sar -u 2 5       # 每2秒采样CPU,共5次

2. 磁盘监控

bash 复制代码
# 磁盘使用情况
df -hT
lsblk

# 磁盘I/O监控
iostat -x 1 3
iotop          # 需安装,类似top的磁盘监控

# 大文件查找
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null

3. 网络监控

bash 复制代码
# 网络连接统计
netstat -tunlp
ss -tunlp      # 更快的netstat替代

# 实时网络流量
iftop -i eth0  # 需安装
nethogs        # 按进程查看流量

# 网络性能测试
iperf3 -s      # 服务端
iperf3 -c <server_ip> -t 30  # 客户端

二、故障排查与日志分析

1. 日志分析

bash 复制代码
# 实时查看日志
tail -f /var/log/syslog
journalctl -f   # systemd系统

# 日志过滤
grep "ERROR" /var/log/messages
grep -A 5 -B 5 "关键字" /var/log/nginx/access.log

# 日志时间范围查询
sed -n '/2024-01-01 10:00/,/2024-01-01 11:00/p' /var/log/messages

2. 进程排查

bash 复制代码
# 查找占用资源高的进程
ps aux --sort=-%cpu | head -10
ps aux --sort=-%mem | head -10

# 查看进程打开的文件
lsof -p <PID>
lsof -i :8080   # 查看端口占用

# 进程树查看
pstree -ap <PID>

3. 系统调用追踪

bash 复制代码
# 跟踪系统调用
strace -p <PID> -f -tt
strace -c <command>  # 统计系统调用

# 动态库调用跟踪
ltrace -p <PID>

三、日常运维操作

1. 文件与目录管理

bash 复制代码
# 批量操作
find /var/log -name "*.log" -mtime +7 -delete
find . -type f -exec grep -l "pattern" {} \;

# 文件同步与备份
rsync -avz --progress source/ user@dest:/path/
rsync -avz --delete source/ dest/  # 镜像同步

2. 用户与权限管理

bash 复制代码
# 批量用户管理
for user in user1 user2 user3; do
    useradd $user
    echo "$user:Initial123" | chpasswd
done

# 权限修复
find /path -type d -exec chmod 755 {} \;
find /path -type f -exec chmod 644 {} \;
chown -R user:group /path

3. 定时任务

bash 复制代码
# 查看所有用户的cron任务
for user in $(cut -f1 -d: /etc/passwd); do 
    echo "=== $user ==="; 
    crontab -u $user -l 2>/dev/null; 
done

# 一次性定时任务
echo "bash /path/script.sh" | at 02:00 tomorrow

四、网络配置与诊断

1. 网络配置

bash 复制代码
# IP配置
ip addr show
ip route show
ip link set eth0 up
ip addr add 192.168.1.100/24 dev eth0

# 网络诊断
mtr -n 8.8.8.8           # 路由跟踪
tcpdump -i eth0 -n port 80
nc -zv host port         # 端口检测

2. 防火墙管理

bash 复制代码
# iptables
iptables -L -n -v
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT

# firewalld(CentOS/RHEL)
firewall-cmd --list-all
firewall-cmd --add-port=8080/tcp --permanent

五、容器与编排环境

1. Docker操作

bash 复制代码
# 容器管理
docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"
docker stats --no-stream
docker logs -f --tail 100 <container>

# 清理无用资源
docker system prune -af
docker volume prune

2. Kubernetes操作

bash 复制代码
# 常用查询
kubectl get pods -o wide
kubectl get events --sort-by='.lastTimestamp'
kubectl top pods --containers

# 日志查看
kubectl logs -f <pod> --tail=100
kubectl logs --since=1h <pod>

# 故障排查
kubectl describe pod <pod>
kubectl exec -it <pod> -- /bin/bash

六、Shell脚本技巧

1. 常用脚本片段

bash 复制代码
#!/bin/bash

# 参数检查
if [ $# -ne 2 ]; then
    echo "Usage: $0 <arg1> <arg2>"
    exit 1
fi

# 安全退出
set -euo pipefail
trap "echo '脚本被中断'; exit 1" INT TERM

# 并发控制
MAX_JOBS=5
for item in $(cat list.txt); do
    ((i=i%MAX_JOBS)); ((i++==0)) && wait
    process_item "$item" &
done
wait

2. 实用函数

bash 复制代码
# 日志函数
log() {
    local level=$1
    shift
    echo "$(date '+%Y-%m-%d %H:%M:%S') [$level] $@"
}

# 检查服务状态
check_service() {
    systemctl is-active --quiet $1
    if [ $? -eq 0 ]; then
        log "INFO" "Service $1 is running"
        return 0
    else
        log "ERROR" "Service $1 is not running"
        return 1
    fi
}

七、性能优化命令

1. 内核参数调优

bash 复制代码
# 查看当前参数
sysctl -a | grep tcp
cat /proc/sys/vm/swappiness

# 临时修改
sysctl -w net.core.somaxconn=1024

# 永久修改
echo "net.core.somaxconn=1024" >> /etc/sysctl.conf
sysctl -p

2. 文件系统优化

bash 复制代码
# I/O调度器
cat /sys/block/sda/queue/scheduler
echo "deadline" > /sys/block/sda/queue/scheduler

# 文件系统检查
tune2fs -l /dev/sda1  # ext文件系统
xfs_info /dev/sdb1    # xfs文件系统

八、安全审计

1. 安全检查

bash 复制代码
# SSH安全检查
grep -E "PermitRootLogin|PasswordAuthentication" /etc/ssh/sshd_config

# 文件完整性检查
rpm -Va  # RHEL/CentOS
debsums  # Debian/Ubuntu

# 异常进程检查
ps aux | awk '$3>30 || $4>30 {print $0}'

2. 入侵检测

bash 复制代码
# 检查异常登录
last -f /var/log/wtmp | head -20
grep "Failed password" /var/log/auth.log

# 检查可疑文件
find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;
find / -type f -name "*.php" -exec grep -l "eval(" {} \;

九、实用组合命令

1. 监控组合

bash 复制代码
# 一键系统健康检查
echo "=== $(date) ==="
echo "Load: $(uptime)"
echo "Memory: $(free -h | grep Mem)"
echo "Disk: $(df -h / | tail -1)"
echo "Top CPU: $(ps aux --sort=-%cpu | head -3 | tail -2)"
echo "Top MEM: $(ps aux --sort=-%mem | head -3 | tail -2)"

2. 批量操作

bash 复制代码
# 并行执行命令
parallel -j 10 ssh {} "hostname" ::: server{1..20}

# 批量文件处理
find /data -name "*.log" -type f -size +1G | while read file; do
    gzip "$file"
done

最佳实践建议

  1. 命令别名:将常用命令添加到~/.bashrc
bash 复制代码
alias ll='ls -alhF'
alias ports='netstat -tunlp'
alias df='df -hT'

2. 历史命令优化

bash 复制代码
export HISTSIZE=10000
export HISTFILESIZE=20000
export HISTTIMEFORMAT='%F %T '

3. 使用screen/tmux:保持会话持久化

bash 复制代码
screen -S session_name
tmux new -s session_name

4. 定期清理

bash 复制代码
# 清理旧内核
apt autoremove --purge   # Debian/Ubuntu
package-cleanup --oldkernels --count=2  # CentOS/RHEL
相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式