1. Linux基础指令概述
作为一位使用Linux系统超过15年的老用户,我经常被问到这样一个问题:"Linux命令行看起来好复杂,到底该怎么入门?"今天我们就来聊聊那些真正实用的基础指令,这些指令构成了Linux日常操作的骨架。不同于教科书式的罗列,我会结合自己多年运维和开发经验,重点讲解那些高频使用且容易出错的指令。
Linux命令行的强大之处在于它的组合性。比如你想查看当前目录下所有PDF文件的大小并按修改时间排序,只需要:
bash复制ls -lh *.pdf | sort -k6,7
这个简单的例子展示了管道(|)的威力——它把前一个命令的输出作为后一个命令的输入。这种设计哲学使得简单的命令通过组合可以完成复杂任务。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 文件操作核心指令
2.1 目录导航与查看
cd命令可能是使用频率最高的指令,但很多人不知道这些技巧:
bash复制cd - # 返回上一个工作目录
cd ~ # 回到用户主目录
cd ../.. # 向上移动两级目录
ls命令的实用参数组合:
bash复制ls -lhtr --color=auto
-l长格式显示-h人类可读的文件大小-t按时间排序-r反向排序--color彩色输出
经验:在~/.bashrc中添加
alias ll='ls -lhtr --color=auto'可以永久简化这个常用命令
2.2 文件操作三剑客
cp命令的进阶用法:
bash复制cp -av source_dir/ dest_dir/ # 保留所有属性递归复制
cp --backup=numbered file.txt file.txt # 创建带编号的备份
mv命令的特殊场景:
bash复制mv -i *.txt target_dir/ # 交互式移动,防止覆盖
mv -n file1 file2 # 不覆盖已存在文件
rm的安全使用姿势:
bash复制rm -I *.log # 删除多个文件前提示确认
rm --preserve-root -rf /path/ # 防止误删根目录
3. 文本处理利器
3.1 grep家族
基础正则表达式示例:
bash复制grep -E '^[A-Z]{3}' file.txt # 匹配以三个大写字母开头的行
grep -v '^#' config.conf # 排除所有注释行
性能优化技巧:
bash复制grep -m 100 'error' large.log # 只匹配前100个结果
grep -F fixed_string file.txt # 固定字符串匹配更快
3.2 sed流编辑器
典型应用场景:
bash复制sed -i.bak 's/old/new/g' file.txt # 替换并创建备份
sed -n '10,20p' access.log # 只打印10-20行
3.3 awk数据处理
报表生成示例:
bash复制awk '{sum+=$3} END {print "Total:", sum}' data.csv
awk -F',' 'NR>1 {print $1,$3*1.08}' sales.csv # 计算含税价格
4. 系统监控指令
4.1 进程管理
ps的实用组合:
bash复制ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
top的替代方案:
bash复制htop # 交互式进程查看器
glances # 全能系统监控工具
4.2 磁盘空间
df和du的黄金组合:
bash复制df -hT /home # 查看挂载点空间
du -sh * | sort -h # 排序查看目录大小
5. 网络相关指令
5.1 连接测试
ping的高级用法:
bash复制ping -c 10 -i 0.2 example.com # 控制包数量和间隔
ping -D example.com # 显示时间戳
5.2 端口检查
netstat的替代方案:
bash复制ss -tulnp # 更快的socket统计
lsof -i :22 # 查看22端口占用
6. 权限管理精要
6.1 用户与组
查看用户信息的正确姿势:
bash复制id username # 显示用户详情
getent passwd user1 # 查询用户账户信息
6.2 chmod深度解析
权限的数字表示法:
code复制0 → 无权限
1 → 执行
2 → 写入
4 → 读取
组合示例:chmod 764 script.sh 表示:
- 所有者:7 (4+2+1) 读写执行
- 组用户:6 (4+2) 读写
- 其他用户:4 只读
7. 实用技巧合集
7.1 命令历史
history的妙用:
bash复制!1024 # 执行历史记录中第1024条命令
!?mysql? # 执行最近包含mysql的命令
7.2 后台任务
nohup的正确用法:
bash复制nohup ./long_run.sh > output.log 2>&1 &
disown -h %1 # 使作业与终端完全脱离
7.3 定时任务
crontab示例:
bash复制# 每天凌晨3点备份
0 3 * * * /usr/bin/backup.sh
8. 常见问题排查
8.1 命令找不到
解决方案路径:
bash复制which command_name # 查找命令位置
type -a command_name # 显示命令所有可能位置
8.2 权限被拒绝
诊断步骤:
bash复制ls -l /path/to/file # 检查权限
namei -l /path/to/file # 查看路径上所有权限
getfacl /path/to/directory # 检查ACL权限
8.3 磁盘空间不足
排查方法:
bash复制df -h # 查看磁盘使用情况
du -xh / | sort -h | tail -n 20 # 找出最大目录
lsof +L1 # 查找已删除但未释放的文件
9. 性能优化技巧
9.1 内存管理
查看内存使用:
bash复制free -h # 概要信息
vmstat 1 10 # 动态监控
cat /proc/meminfo # 详细信息
9.2 CPU优化
负载分析:
bash复制uptime # 查看平均负载
mpstat -P ALL 1 # 每个CPU核心的使用率
pidstat 1 # 进程级CPU使用统计
10. 安全最佳实践
10.1 SSH加固
建议配置:
bash复制# /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
AllowUsers your_username
10.2 文件完整性
校验方法:
bash复制sha256sum important_file # 生成校验和
find /etc -type f -exec sha256sum {} + > /var/log/etc_hashes.log # 批量校验
11. 终端生产力提升
11.1 快捷键大全
必会组合:
code复制Ctrl + R # 搜索历史命令
Ctrl + A/E # 移动到行首/行尾
Alt + . # 插入上一个命令的最后一个参数
11.2 自定义环境
.bashrc优化:
bash复制# 添加这些到~/.bashrc
export HISTTIMEFORMAT="%F %T " # 历史记录带时间戳
export PS1='\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\$ ' # 彩色提示符
12. 进阶学习路径
12.1 手册阅读
正确使用man:
bash复制man -k keyword # 搜索相关手册页
man -Tpdf ls > ls.pdf # 生成PDF格式手册
12.2 脚本入门
基础模板:
bash复制#!/usr/bin/env bash
set -euo pipefail # 安全模式
IFS=$'\n\t' # 更安全的字段分隔符
13. 实用工具推荐
13.1 系统信息
inxi全能工具:
bash复制inxi -Fxz # 完整系统概览
13.2 日志分析
journalctl技巧:
bash复制journalctl -u nginx --since "1 hour ago" # 服务特定日志
journalctl -p err -b # 本次启动的错误日志
14. 文件查找与处理
14.1 find高级用法
复杂示例:
bash复制find /var/log -name "*.log" -mtime +30 -size +1M -exec gzip {} \;
14.2 批量重命名
rename工具:
bash复制rename 's/\.jpeg$/\.jpg/' *.jpeg # 更改扩展名
15. 终端多路复用
15.1 tmux基础
启动会话:
bash复制tmux new -s work_session # 新建命名会话
tmux attach -t work_session # 重新连接
15.2 分屏操作
常用快捷键:
code复制Ctrl+b % # 垂直分屏
Ctrl+b " # 水平分屏
Ctrl+b 方向键 # 切换窗格
16. 软件包管理
16.1 apt/dnf/yum
常用操作:
bash复制apt show package_name # 显示包详情
dnf history undo last # 撤销上次安装
16.2 编译安装
标准流程:
bash复制./configure --prefix=/usr/local
make -j$(nproc)
sudo make install
17. 环境变量管理
17.1 变量操作
最佳实践:
bash复制export PATH="$HOME/bin:$PATH" # 添加个人bin目录
env | sort # 查看所有环境变量
17.2 配置文件加载顺序
加载优先级:
- /etc/profile
- ~/.bash_profile
- ~/.bashrc
- ~/.bash_login
- ~/.profile
18. 压缩与归档
18.1 tar实用技巧
常用组合:
bash复制tar -czvf backup.tar.gz --exclude='*.tmp' /data # 排除特定文件
tar -tf archive.tar.gz | grep keyword # 搜索归档内容
18.2 并行压缩
pigz加速:
bash复制tar -cf - /big_dir | pigz > backup.tar.gz # 多线程压缩
19. 系统服务管理
19.1 systemd基础
常用命令:
bash复制systemctl list-unit-files --type=service # 列出所有服务
systemctl edit --full service_name # 编辑服务配置
19.2 日志追踪
实时监控:
bash复制journalctl -f -u apache2 # 跟踪服务日志
20. 终端录制与回放
20.1 script工具
录制会话:
bash复制script -t 2> timing.log -a session.log # 记录时间和内容
20.2 回放技巧
使用scriptreplay:
bash复制scriptreplay timing.log session.log # 按原速回放
21. 远程文件传输
21.1 scp安全拷贝
常用模式:
bash复制scp -C -p ~/file.txt user@remote:/path/ # 压缩传输并保留属性
scp -r project_dir/ user@remote:~/backup/ # 递归复制目录
21.2 rsync增量同步
高效备份:
bash复制rsync -avz --delete /source/ user@remote:/backup/ # 镜像同步
22. 时间与时区
22.1 时间同步
chronyd配置:
bash复制chronyc sources -v # 查看时间源状态
22.2 时区切换
交互式设置:
bash复制timedatectl list-timezones
sudo timedatectl set-timezone Asia/Shanghai
23. 内核参数调优
23.1 sysctl设置
查看当前值:
bash复制sysctl -a | grep tcp_keepalive
23.2 临时修改
调整参数:
bash复制sudo sysctl -w vm.swappiness=10 # 减少交换倾向
24. 硬件信息查询
24.1 lshw工具
完整报告:
bash复制sudo lshw -html > hardware.html # 生成HTML报告
24.2 专用工具
设备特定:
bash复制lspci -tv # PCI设备树
lsusb -v # USB设备详情
25. 用户环境隔离
25.1 sudo配置
精细控制:
bash复制# /etc/sudoers.d/user_override
username ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
25.2 资源限制
ulimit设置:
bash复制ulimit -a # 查看当前限制
ulimit -n 4096 # 临时增加文件描述符限制
26. 系统救援技巧
26.1 只读文件系统
挂载选项:
bash复制mount -o remount,rw / # 重新挂载为可写
26.2 修复引导
GRUB恢复:
bash复制grub-install /dev/sdX
update-grub
27. 容器基础操作
27.1 Docker常用命令
容器管理:
bash复制docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}" # 资源监控
27.2 Podman替代方案
无守护进程:
bash复制podman generate systemd --name my_container > /etc/systemd/system/my_container.service
28. 性能基准测试
28.1 磁盘IO
测试工具:
bash复制fio --name=randread --ioengine=libaio --rw=randread --bs=4k --numjobs=4 --size=1G --runtime=60 --time_based --end_fsync=1
28.2 网络带宽
iperf3使用:
bash复制# 服务端
iperf3 -s
# 客户端
iperf3 -c server_ip -t 30 -P 8
29. 系统快照管理
29.1 LVM快照
创建流程:
bash复制lvcreate -L 10G -s -n db_snapshot /dev/vg00/db_volume
29.2 btrfs快照
轻量级方案:
bash复制btrfs subvolume snapshot /data /data/snapshot_$(date +%Y%m%d)
30. 安全审计工具
30.1 lynis扫描
系统加固:
bash复制sudo lynis audit system
30.2 chkrootkit
后门检测:
bash复制sudo chkrootkit -q
31. 日志轮转配置
31.1 logrotate
自定义配置:
bash复制# /etc/logrotate.d/myapp
/var/log/myapp/*.log {
daily
rotate 30
compress
missingok
notifempty
}
32. 系统备份策略
32.1 全量备份
tar方案:
bash复制tar --exclude=/backup --exclude=/proc --exclude=/sys --exclude=/dev -cvpzf /backup/full_backup_$(date +%Y%m%d).tar.gz /
32.2 增量备份
rsync方案:
bash复制rsync -a --link-dest=/backup/last_full/ /source/ /backup/incr_$(date +%Y%m%d)/
33. 内核模块管理
33.1 模块操作
常用命令:
bash复制modinfo ext4 # 显示模块信息
lsmod | grep nvidia # 检查特定模块
33.2 参数调整
运行时修改:
bash复制echo 1 | sudo tee /sys/module/snd_hda_intel/parameters/power_save
34. 系统启动分析
34.1 启动耗时
诊断工具:
bash复制systemd-analyze blame
systemd-analyze critical-chain
34.2 服务依赖
图形化查看:
bash复制systemd-analyze dot | dot -Tsvg > boot.svg
35. 虚拟化支持
35.1 KVM检查
硬件验证:
bash复制virt-host-validate
35.2 虚拟机创建
快速启动:
bash复制virt-install --name=vm1 --ram=2048 --vcpus=2 --disk path=/var/lib/libvirt/images/vm1.qcow2,size=20 --os-type=linux --os-variant=centos7.0 --network bridge=virbr0 --graphics none --console pty,target_type=serial --location 'http://mirror.centos.org/centos/7/os/x86_64/' --extra-args='console=ttyS0,115200n8 serial'
36. 电源管理优化
36.1 CPU频率
调节策略:
bash复制cpupower frequency-info
cpupower frequency-set -g powersave
36.2 挂起恢复
调试技巧:
bash复制journalctl -b-1 | grep -i suspend # 查看上次挂起日志
37. 系统裁剪技巧
37.1 最小化安装
Debian示例:
bash复制debootstrap --variant=minbase stable /mnt/minimal
37.2 服务精简
禁用无用服务:
bash复制systemctl list-unit-files --state=enabled | grep -v static
38. 内存磁盘创建
38.1 tmpfs使用
高性能缓存:
bash复制mount -t tmpfs -o size=1G tmpfs /mnt/ramdisk
38.2 持久化方案
ramfs配置:
bash复制# /etc/fstab
tmpfs /var/cache tmpfs defaults,size=512M 0 0
39. 系统调用追踪
39.1 strace工具
调试应用:
bash复制strace -f -e trace=file,network -o trace.log ./program
39.2 ltrace替代
库调用追踪:
bash复制ltrace -S -n 2 -o libcalls.log /usr/bin/command
40. 终端复用技巧
40.1 screen基础
会话管理:
bash复制screen -S long_task -dm bash -c "command; exec bash"
screen -x long_task # 重新连接
40.2 分屏管理
区域划分:
bash复制screen -X split -v # 垂直分割
screen -X focus # 切换区域
41. 文件系统特性
41.1 ext4优化
挂载选项:
bash复制# /etc/fstab
UUID=xxx / ext4 defaults,noatime,nodiratime,commit=60,data=writeback 0 1
41.2 XFS优势
创建命令:
bash复制mkfs.xfs -f -i size=2048 -d su=64k,sw=4 /dev/sdb1
42. 环境隔离方案
42.1 chroot监狱
基本设置:
bash复制debootstrap stable /chroot/stable http://deb.debian.org/debian
42.2 namespace隔离
unshare使用:
bash复制unshare --mount --uts --ipc --pid --fork --user --map-root-user chroot /altroot /bin/bash
43. 系统监控告警
43.1 简单监控
watch命令:
bash复制watch -n1 -d 'df -h; free -h; uptime'
43.2 邮件告警
配置示例:
bash复制# /etc/aliases
monitor: "|/usr/local/bin/monitor_alert.sh"
44. 批量操作技巧
44.1 并行执行
xargs加速:
bash复制find . -name "*.log" | xargs -P 8 -I {} gzip {}
44.2 远程执行
pssh工具:
bash复制pssh -h hosts.txt -l user -i "uptime"
45. 系统日志分析
45.1 模式识别
常见错误:
bash复制grep -E 'error|fail|exception|timeout' /var/log/syslog
45.2 日志聚合
简单方案:
bash复制tail -f /var/log/{syslog,messages,dmesg} | grep --line-buffered keyword
46. 内核调试技巧
46.1 dmesg过滤
关键信息:
bash复制dmesg -T -l err,crit,alert,emerg
46.2 内核转储
配置方法:
bash复制# /etc/sysctl.conf
kernel.core_pattern = /var/coredumps/core-%e-%p-%t
47. 系统时间管理
47.1 高精度时间
chrony配置:
bash复制# /etc/chrony.conf
server ntp.aliyun.com iburst
makestep 1.0 3
47.2 硬件时钟
同步操作:
bash复制hwclock --systohc --utc
48. 磁盘加密方案
48.1 LUKS基础
加密分区:
bash复制cryptsetup luksFormat /dev/sdb1
cryptsetup open /dev/sdb1 secure_disk
48.2 自动挂载
fstab配置:
bash复制# /etc/crypttab
secure_disk /dev/sdb1 /etc/secure.key luks
49. 网络配置进阶
49.1 绑定网卡
teamd配置:
bash复制# /etc/teamd/team0.conf
{
"device": "team0",
"runner": {"name": "activebackup"},
"ports": {"eth0": {}, "eth1": {}}
}
49.2 路由管理
策略路由:
bash复制ip rule add from 192.168.1.100 table 100
ip route add default via 192.168.1.1 dev eth0 table 100
50. 终端美化方案
50.1 提示符定制
高级PS1:
bash复制export PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
50.2 颜色方案
终端配色:
bash复制# ~/.bashrc
eval `dircolors ~/.dircolors.256dark`
