1. Linux系统命令目录解析
作为一名Linux系统管理员,掌握常用命令是基本功。但面对数百个命令,新手常会感到无从下手。我将从实际运维角度,分类整理那些真正高频使用的核心命令,并附上我在生产环境中积累的实用技巧。
Linux命令通常存放在/bin、/sbin、/usr/bin等目录,通过which或whereis可以快速定位命令路径。比如查询ls的位置:
which ls # 输出:/bin/ls2. 文件与目录操作命令
2.1 基础文件操作
ls命令的-lht组合是我最常用的参数:
-l长格式显示-h人类可读的文件大小-t按修改时间排序
ls -lht /var/log # 输出示例: # -rw-r--r-- 1 root root 2.3M Mar 12 10:20 syslog # -rw-r--r-- 1 root root 1.8M Mar 12 09:15 kern.log注意:在脚本中避免直接使用
ls解析文件列表,推荐使用find或数组操作,因为ls的输出可能包含特殊字符导致解析异常。
2.2 高级目录管理
find命令的-exec参数配合+替代\;能显著提升批量操作效率:
# 查找并压缩所有7天前的日志文件 find /var/log -name "*.log" -mtime +7 -exec gzip {} +rsync是我进行目录同步的首选工具,关键参数组合:
rsync -avz --delete --progress /source/ user@remote:/destination/ # -a 归档模式 # -v 详细输出 # -z 压缩传输 # --delete 同步删除3. 系统监控与进程管理
3.1 实时监控命令
htop比传统top更直观,安装后建议配置:
sudo apt install htop htop -d 10 # 设置10秒刷新间隔nmon是性能分析的利器,启动后按:
c显示CPUm显示内存d显示磁盘n显示网络
3.2 进程调试技巧
strace追踪系统调用时,我常用这些参数:
strace -ff -tt -T -o debug.log python script.py # -ff 跟踪子进程 # -tt 带时间戳 # -T 显示调用耗时lsof排查文件占用问题示例:
lsof /var/lib/docker # 查看哪些进程在使用Docker目录4. 网络配置与调试
4.1 网络状态分析
ss替代netstat的现代方案:
ss -tulnp # -t TCP连接 # -u UDP连接 # -l 监听状态 # -n 数字形式显示 # -p 显示进程信息tcpdump抓包实战命令:
tcpdump -i eth0 -nn -s0 -w capture.pcap port 80 # -nn 不解析主机和端口名 # -s0 抓完整包 # -w 保存到文件4.2 防火墙管理
ufw简化iptables配置:
sudo ufw allow 22/tcp sudo ufw enable复杂规则仍需要iptables:
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP # 限制单IP连接数5. 包管理与系统服务
5.1 软件包管理
APT高级用法:
sudo apt-get --purge remove package # 彻底删除 sudo apt-cache search ^nginx # 正则搜索YUM仓库配置技巧:
yum-config-manager --add-repo http://repo.example.com yum makecache fast5.2 服务管理
systemctl的常用操作:
systemctl list-unit-files --type=service # 查看所有服务 systemctl edit --full servicename # 编辑服务配置 journalctl -u nginx -f # 跟踪服务日志6. 文本处理三剑客
6.1 grep进阶技巧
grep -P 'pattern' file # 启用PCRE正则 grep -m 100 'error' logfile # 只匹配前100行 zgrep 'exception' /var/log/*.gz # 直接搜索压缩包6.2 sed实战示例
批量替换文件内容:
sed -i.bak 's/old/new/g' *.conf # -i.bak 创建备份文件6.3 awk数据分析
统计Nginx日志状态码:
awk '{print $9}' access.log | sort | uniq -c | sort -rn7. 磁盘与存储管理
7.1 磁盘空间分析
ncdu交互式磁盘分析工具:
ncdu /var # 按d删除文件 # 按n按文件名排序df的易读格式:
df -hT -x tmpfs -x devtmpfs # 排除临时文件系统7.2 LVM日常操作
扩展逻辑卷步骤:
lvextend -L +10G /dev/vg00/lv_data resize2fs /dev/vg00/lv_data8. 用户与权限控制
8.1 sudo精细配置
编辑/etc/sudoers推荐使用:
visudo示例规则:
User_Alias ADMINS = user1, user2 ADMINS ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx8.2 ACL高级权限
设置目录默认ACL:
setfacl -d -m u:user:rwx,g:group:rx,o::- /shared getfacl /shared9. 定时任务管理
9.1 crontab最佳实践
编辑用户crontab:
crontab -e示例任务:
0 3 * * * /path/to/backup.sh >/dev/null 2>&1 10 4 * * 1 /usr/bin/certbot renew --quiet重要:所有cronjob都应该重定向输出,避免系统邮件堆积
9.2 systemd定时器
替代cron的现代方案:
systemctl list-timers10. 安全加固实践
10.1 SSH安全配置
/etc/ssh/sshd_config关键参数:
PermitRootLogin no PasswordAuthentication no AllowUsers admin10.2 审计日志配置
安装auditd并添加规则:
sudo apt install auditd auditctl -a always,exit -F arch=b64 -S execve11. 容器与虚拟化命令
11.1 Docker日常操作
清理无用容器和镜像:
docker system prune -af docker volume prune11.2 KVM管理命令
创建虚拟机示例:
virt-install --name vm1 --ram 2048 --disk path=/var/lib/libvirt/images/vm1.qcow2,size=20 --vcpus 2 --os-type linux --os-variant ubuntu20.04 --network bridge=br0 --graphics none --console pty,target_type=serial --location 'http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/' --extra-args 'console=ttyS0,115200n8 serial'12. 开发调试工具链
12.1 编译安装通用流程
./configure --prefix=/usr/local/app make -j$(nproc) sudo make install12.2 GDB调试示例
调试崩溃的程序:
gdb -ex run --args /path/to/program (gdb) bt full # 查看完整堆栈13. 性能优化命令
13.1 内存分析
free的正确解读方式:
free -h # 重点关注available列13.2 IO性能测试
fio基准测试示例:
fio --name=randread --ioengine=libaio --iodepth=16 --rw=randread --bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 --group_reporting14. 日志分析实战
14.1 日志实时监控
multitail多日志并行查看:
multitail -cS apache /var/log/apache2/access.log -cS mysql /var/log/mysql/error.log14.2 日志统计分析
统计HTTP状态码分布:
cat access.log | awk '{count[$9]++} END {for(code in count) print code, count[code]}' | sort -n15. 终端生产力工具
15.1 tmux会话管理
我的常用配置~/.tmux.conf:
set -g mouse on bind | split-window -h bind - split-window -v15.2 命令行快捷键
提高效率的组合:
Ctrl + r反向搜索历史命令Alt + .插入上条命令的最后一个参数Ctrl + x + e用编辑器编辑当前命令
16. 系统救援与修复
16.1 单用户模式
GRUB进入救援模式:
- 启动时按住Shift
- 选择高级选项
- 选择recovery mode
16.2 文件系统修复
ext4文件系统修复:
fsck -y /dev/sda117. 环境配置管理
17.1 环境变量设置
推荐在/etc/profile.d/添加自定义配置:
echo 'export PATH=$PATH:/opt/bin' > /etc/profile.d/custom.sh17.2 别名配置技巧
实用的.bashrc别名:
alias ll='ls -alF' alias grep='grep --color=auto' alias df='df -h'18. 硬件信息查询
18.1 设备信息获取
查看PCI设备详情:
lspci -vvnn18.2 温度监控
安装lm-sensors后:
sensors watch -n 2 sensors # 实时监控19. 备份与恢复策略
19.1 增量备份方案
使用rsnapshot配置示例:
backup /etc/ localhost/ backup /home/ localhost/19.2 数据库备份
MySQL热备份命令:
mysqldump --single-transaction -u root -p dbname > backup.sql20. 跨平台操作命令
20.1 Windows互操作
通过smbclient访问共享:
smbclient //server/share -U user20.2 编码转换技巧
处理Windows文本文件:
iconv -f GBK -t UTF-8 win.txt > linux.txt dos2unix script.sh