1. Linux基础指令入门指南
第一次接触Linux终端时,那些闪烁的光标和神秘的黑白字符总让人望而生畏。但别担心,这些看似复杂的指令其实就像厨房里的刀具——每把都有特定用途,掌握基础几样就能完成大部分日常工作。作为在运维岗位摸爬滚打十年的老手,我把最核心的20%指令整理成这份生存指南,它们能解决80%的日常操作需求。
终端(terminal)是Linux系统的神经中枢,无论你是要管理服务器、排查故障还是开发程序,最终都要回到这个黑白界面。与图形界面相比,命令行操作更精确高效——想象一下用鼠标移动100个文件和用一行命令完成的效率差异。接下来我会按照实际工作场景分类讲解这些指令,每个都附带真实用例和易错点分析。
2. 文件系统导航与操作
2.1 目录穿梭三剑客
pwd(print working directory)是你的GPS定位器,随时告诉你当前所在目录的绝对路径。这个看似简单的命令在复杂的目录跳转后特别有用,我就曾因为没及时确认位置而误删过生产环境文件。
ls是使用频率最高的指令之一,但多数人只用过它的基础形式。试试这些实用参数组合:
bash复制ls -lh # 人类可读的文件大小显示(如1.2G)
ls -lt # 按修改时间倒序排列
ls -la # 显示包括隐藏文件的所有内容
cd的进阶用法能大幅提升效率:
bash复制cd - # 返回上一个工作目录
cd ~ # 快速回到用户主目录
cd ../.. # 向上跳转两级目录
特别提醒:Linux路径区分大小写!/home/user和/Home/User是完全不同的路径
2.2 文件操作核心指令
cp复制文件时,-r参数对目录操作必不可少。我曾见过新手因为漏掉这个参数导致整个备份失败:
bash复制cp -r /source/folder /destination # 正确复制目录
mv指令的原子特性在运维中很有价值——移动大文件时不会出现"半成品"状态。这个特性我们常用来实现零停机部署:
bash复制mv old_app new_app # 瞬间完成应用切换
rm是危险的指令,特别是配合-rf参数时。建议先执行ls确认文件列表,再用rm删除。生产环境必备安全操作:
bash复制alias rm='rm -i' # 添加删除确认提示
3. 文件内容查看与处理
3.1 文本查看利器
cat适合查看小文件,但遇到大日志文件时会刷屏。这时应该使用:
bash复制less /var/log/syslog # 可上下翻页的查看器
head和tail是日志分析的黄金组合。实时监控日志增长:
bash复制tail -f /var/log/nginx/access.log # -f参数持续输出新增内容
grep的威力在于正则表达式。查找包含ERROR的日志行并显示前后3行:
bash复制grep -A3 -B3 "ERROR" application.log
3.2 文本处理三巨头
awk特别适合处理结构化文本。统计Nginx日志中各IP的访问次数:
bash复制awk '{print $1}' access.log | sort | uniq -c | sort -nr
sed进行批量替换时记得先备份。替换配置文件中的旧域名:
bash复制sed -i.bak 's/old.com/new.com/g' *.conf
cut按列提取数据。获取所有用户的用户名:
bash复制cut -d: -f1 /etc/passwd
4. 系统状态监控
4.1 进程管理
ps查看进程信息时,推荐使用BSD风格参数:
bash复制ps aux | grep nginx # 查看所有nginx进程
top的增强版htop更直观。安装后可以看到彩色显示的CPU、内存占用:
bash复制sudo apt install htop
htop
kill发送信号时,-9(SIGKILL)是最后手段。应该先尝试-15(SIGTERM):
bash复制kill -15 1234 # 优雅终止进程
kill -9 1234 # 强制杀死进程
4.2 硬件资源查看
free检查内存使用,注意available字段才是真正可用内存:
bash复制free -h # 人类可读格式显示
df查看磁盘空间时,-h参数必不可少:
bash复制df -h / # 查看根分区使用情况
lscpu和lsblk分别显示CPU和块设备信息,比图形界面工具更详细。
5. 网络相关指令
5.1 连接测试工具
ping是最基础但最有用的网络诊断工具。测试到网关的连通性:
bash复制ping -c4 192.168.1.1 # 发送4个包后停止
traceroute显示数据包路径,排查网络延迟问题时不可或缺:
bash复制traceroute example.com
5.2 网络配置查看
ifconfig已被ip命令取代,但很多老手仍习惯使用:
bash复制ip addr show # 显示所有网络接口
netstat查看网络连接状态。显示所有监听中的TCP端口:
bash复制netstat -tulnp
ss是更现代的替代品,速度更快:
bash复制ss -tulnp
6. 用户与权限管理
6.1 用户账户操作
useradd创建用户时,建议指定家目录和登录shell:
bash复制useradd -m -s /bin/bash newuser
passwd设置密码有复杂度要求。生产环境应该使用:
bash复制passwd -e username # 强制下次登录修改密码
6.2 权限控制
chmod的数字表示法更精确。设置目录为751权限:
bash复制chmod 751 /shared_folder
chown改变文件所有者时,可以同时修改所属组:
bash复制chown user:group file.txt
sudo不是指令而是权限机制。配置时建议使用visudo编辑:
bash复制sudo visudo # 安全地编辑sudoers文件
7. 软件包管理
7.1 Debian/Ubuntu系
apt已经取代apt-get成为推荐工具。更新软件源并升级所有包:
bash复制sudo apt update && sudo apt upgrade -y
dpkg直接操作deb包。查看已安装的软件信息:
bash复制dpkg -l | grep nginx
7.2 RHEL/CentOS系
yum在RHEL8后被dnf取代。安装EPEL扩展源:
bash复制sudo dnf install epel-release
rpm查询软件包安装的文件:
bash复制rpm -ql package_name
8. 压缩与归档
8.1 常用压缩工具
tar配合gzip是最常见的组合。打包并压缩整个目录:
bash复制tar czvf backup.tar.gz /path/to/folder
解压时保留原权限:
bash复制tar xzvp -f archive.tar.gz
8.2 其他压缩格式
处理zip文件需要额外安装:
bash复制sudo apt install unzip
unzip archive.zip -d target_dir
7z格式提供更高压缩比:
bash复制7z a backup.7z /path/to/folder
9. 环境变量与Shell配置
9.1 变量管理
查看所有环境变量:
bash复制printenv
临时设置变量(仅当前会话有效):
bash复制export TEMP_VAR="value"
永久生效需要写入配置文件:
bash复制echo 'export PERM_VAR="value"' >> ~/.bashrc
source ~/.bashrc
9.2 配置文件加载顺序
登录Shell读取:
- /etc/profile
- ~/.bash_profile
- ~/.bashrc
- ~/.profile
非登录Shell只读取~/.bashrc
10. 实用技巧合集
10.1 命令组合技
统计当前目录文件数量:
bash复制ls -1 | wc -l
查找并删除所有临时文件:
bash复制find /tmp -name "*.tmp" -delete
10.2 历史命令优化
搜索历史命令:
bash复制Ctrl+R # 进入反向搜索
显示带时间戳的历史记录:
bash复制export HISTTIMEFORMAT="%F %T "
history
10.3 终端多任务管理
后台运行程序:
bash复制long_running_command &
查看后台作业:
bash复制jobs
调回前台:
bash复制fg %1
11. 安全操作规范
11.1 敏感文件权限
关键配置文件应该限制访问:
bash复制chmod 600 /etc/ssh/sshd_config
chown root:root /etc/shadow
11.2 安全传输文件
使用scp加密传输:
bash复制scp -P 2222 file.txt user@remote:/path/
更推荐rsync增量同步:
bash复制rsync -avz -e "ssh -p 2222" /local/path/ user@remote:/remote/path/
12. 性能分析工具
12.1 I/O监控
iostat查看磁盘IO负载:
bash复制iostat -dx 2 # 每2秒刷新一次
iotop类似top的IO监控工具:
bash复制sudo iotop
12.2 内存分析
vmstat查看虚拟内存状态:
bash复制vmstat 1 # 每秒刷新
slabtop显示内核slab缓存:
bash复制sudo slabtop
13. 系统服务管理
13.1 systemd基础
查看服务状态:
bash复制systemctl status nginx
设置开机启动:
bash复制sudo systemctl enable nginx
13.2 日志查看
journalctl查询系统日志:
bash复制journalctl -u nginx --since "1 hour ago"
导出日志到文件:
bash复制journalctl -b > boot.log
14. 终端快捷键大全
14.1 光标移动
- Ctrl+A:行首
- Ctrl+E:行尾
- Alt+F:前进一个单词
- Alt+B:后退一个单词
14.2 文本处理
- Ctrl+U:删除到行首
- Ctrl+K:删除到行尾
- Ctrl+W:删除前一个单词
- Ctrl+Y:粘贴刚才删除的内容
15. 常见问题排错
15.1 指令找不到
检查PATH变量是否包含指令路径:
bash复制echo $PATH
which command_name
15.2 权限被拒绝
确认当前用户权限:
bash复制ls -l /path/to/file
id -un # 查看当前用户名
15.3 磁盘空间不足
查找大文件:
bash复制du -h --max-depth=1 / | sort -h
清理旧内核(Ubuntu):
bash复制sudo apt autoremove --purge
16. 进阶学习建议
掌握基础指令后,建议通过man和--help深入研究每个命令的选项。例如:
bash复制man grep
tar --help | less
创建自己的命令别名简化操作:
bash复制alias ll='ls -alF'
alias update='sudo apt update && sudo apt upgrade'
最后记住,Linux终端就像乐器,需要持续练习才能熟练掌握。建议每天花10分钟在终端完成日常工作,几周后你会惊讶于自己的进步速度。遇到问题时,多查man手册和官方文档,这比盲目搜索更有效。