1. Linux命令行:从入门到精通的必备技能
在服务器运维和开发工作中,Linux命令行是每个技术人员必须掌握的生存技能。与图形界面相比,命令行操作不仅效率更高,还能完成许多GUI无法实现的高级功能。我至今记得第一次通过命令行批量处理上千个文件时的震撼——原本需要数小时的手工操作,一行命令就搞定了。
本文将分享我多年Linux运维工作中最常用的核心命令,包含大量实际工作场景中的技巧和避坑经验。无论你是刚接触Linux的新手,还是需要查漏补缺的老手,这些命令都能显著提升你的工作效率。
2. 基础导航与文件操作
2.1 ls命令:目录内容查看的艺术
ls可能是你使用最频繁的命令,但它的强大远不止简单的文件列表:
bash复制# 按文件大小排序(适合找大文件)
ls -lhS
# 按修改时间倒序(最近修改的在前)
ls -lht
# 显示inode号(排查硬链接时有用)
ls -i
# 只显示目录
ls -d */
经验之谈:
ls -l输出的权限栏中,第一个字符表示文件类型:-普通文件,d目录,l符号链接,c字符设备,b块设备。这个细节在排查问题时非常有用。
2.2 cd命令:路径导航的智能技巧
除了基本的目录切换,cd还有一些实用技巧:
bash复制# 快速返回家目录(三种等效方式)
cd ~
cd
cd $HOME
# 使用变量保存常用路径
export PROJECT=/opt/myproject
cd $PROJECT
# 利用pushd/popd实现目录栈
pushd /var/log # 进入并记录
pushd /etc # 再进入并记录
popd # 返回上一个目录
2.3 文件操作三剑客:cp/mv/rm
2.3.1 cp命令的高级用法
bash复制# 保留所有属性(包括权限、时间戳等)
cp -a source dest
# 显示复制进度(大文件时很实用)
cp -v largefile.iso /backup/
# 只复制更新的文件(增量备份)
cp -u *.log /backup/logs/
2.3.2 rm命令的安全操作
误删文件是Linux新手最常见的惨剧,这些技巧能降低风险:
bash复制# 安全删除:先ls确认,再rm
ls *.log
rm *.log
# 使用trash-cli替代rm
sudo apt install trash-cli
trash-put file.txt # 可恢复的删除
# 设置rm别名(添加到~/.bashrc)
alias rm='rm -i'
3. 文件查看与文本处理
3.1 高效查看大文件
bash复制# 查看压缩文件不解压
zcat access.log.gz | head
# 实时监控日志文件变化
tail -f /var/log/syslog
# 同时监控多个日志文件
multitail /var/log/nginx/access.log /var/log/nginx/error.log
3.2 grep进阶:正则表达式实战
bash复制# 查找包含error或warning的行
grep -E 'error|warning' system.log
# 显示匹配行前后内容(-A后,-B前,-C前后)
grep -A2 -B2 'critical error' app.log
# 反向匹配(显示不包含的行)
grep -v 'DEBUG' application.log
# 统计匹配次数
grep -c '404' access.log
4. 权限与用户管理
4.1 chmod权限深度解析
Linux权限系统远比755/644复杂:
bash复制# 设置特殊权限位
chmod u+s /usr/bin/myapp # SUID
chmod g+s /shared/ # SGID
chmod +t /tmp/ # Sticky bit
# 使用参考文件设置权限
chmod --reference=ref_file target_file
4.2 sudoers文件安全配置
bash复制# 允许用户执行特定命令无需密码
%developers ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
# 限制命令参数(防止滥用)
user1 ALL=(ALL) /usr/bin/apt install package1
5. 系统监控与性能分析
5.1 top命令的实用技巧
bash复制# 批处理模式(适合脚本中使用)
top -b -n 1 > top.log
# 按内存排序(大写M)
top -o %MEM
# 显示完整命令路径
top -c
5.2 磁盘空间分析实战
bash复制# 找出最大的10个文件
find / -type f -exec du -h {} + 2>/dev/null | sort -rh | head -10
# 分析目录大小分布
ncdu /var/log # 需要先安装ncdu
6. 网络诊断与文件传输
6.1 网络连通性测试组合拳
bash复制# 完整网络诊断流程
ping -c4 example.com # 基本连通性
traceroute example.com # 路由追踪
mtr example.com # 持续路由诊断
curl -Iv https://example.com # HTTP检查
6.2 rsync高级文件同步
bash复制# 增量备份(保留权限和时间戳)
rsync -avz --delete /source/ user@remote:/backup/
# 限速传输(避免占用全部带宽)
rsync --bwlimit=1000 -avz largefile remote:/path/
# 断点续传
rsync --partial --progress bigfile remote:/path/
7. 实用命令组合与脚本技巧
7.1 一行命令解决常见问题
bash复制# 批量重命名文件
for file in *.jpg; do mv "$file" "${file%.jpg}_backup.jpg"; done
# 统计每种文件类型的数量
find . -type f | awk -F. 'NF>1{print $NF}' | sort | uniq -c
# 快速创建测试文件
dd if=/dev/zero of=testfile bs=1M count=1024 # 创建1GB文件
7.2 提高效率的.bashrc配置
bash复制# 添加到~/.bashrc
alias ll='ls -alF'
alias grep='grep --color=auto'
alias df='df -h'
alias du='du -h'
# 历史命令增强
export HISTTIMEFORMAT="%F %T "
export HISTSIZE=10000
export HISTFILESIZE=20000
8. 常见问题排查指南
8.1 "Permission denied"问题排查
- 检查文件权限:
ls -l filename - 检查父目录权限:
ls -ld /path/to/ - 检查SELinux状态:
getenforce - 检查ACL权限:
getfacl filename
8.2 磁盘空间不足的应急处理
bash复制# 快速释放空间
find /var/log -type f -name "*.log" -size +10M -exec truncate -s 0 {} \;
# 查找被删除但仍占空间的文件(需重启进程)
lsof | grep deleted
掌握这些命令后,你会发现Linux命令行就像瑞士军刀一样强大。建议每天学习1-2个新命令的用法,逐步积累你的命令行技能库。遇到问题时,记得善用man命令查看官方文档,比如man grep会显示所有可用选项和示例。