1. Linux基础命令概述
作为一名Linux系统管理员,我每天都要和命令行打交道。那些看似简单的命令组合,实际上蕴含着系统运行的底层逻辑。新手常犯的错误是死记硬背命令参数,而老手更关注命令之间的组合使用场景。比如grep配合管道符|可以完成90%的日志分析工作,awk和sed的组合能处理各种文本变形需求。
经验之谈:不要试图记住所有参数,掌握
--help和man的使用比背命令更重要
2. 文件与目录操作命令
2.1 基础导航命令
pwd显示当前路径这个命令看似简单,但在复杂的目录跳转后特别有用。我习惯用cd -快速返回上一个目录,比反复按cd ..高效得多。ls命令的-lht参数组合(按修改时间倒序+人类可读大小显示)是我查看目录内容的标准姿势。
# 经典组合:查看最近修改的大文件 ls -lht | head -n 102.2 文件操作进阶
cp命令的-a参数保留所有属性这个技巧在备份时特别重要。而mv命令实际上是个"重命名"操作,这个认知让我少走了很多弯路。rm命令的-i交互模式建议长期开启,毕竟数据无价。
# 安全删除模式(适合加入.bashrc) alias rm='rm -i'3. 文本处理三剑客
3.1 grep的七十二变
grep -rn "error" /var/log/这个命令帮我定位过无数系统问题。-A3 -B2参数显示匹配行的前后内容,-v反向选择,-E启用扩展正则,这些组合构成了我的日常调试工具包。
3.2 sed的魔法
用sed -i 's/old/new/g' file.txt做批量替换比任何编辑器都高效。更复杂的如sed -n '5,10p' filename只打印5-10行,这种精确控制让我处理日志时游刃有余。
3.3 awk的数据处理
提取特定列数据时,awk '{print $1,$3}'是基本操作。进阶用法如统计Nginx访问日志的IP访问量:
awk '{ips[$1]++} END {for(ip in ips) print ip,ips[ip]}' access.log | sort -nrk2 | head4. 系统监控与进程管理
4.1 实时监控命令
top命令的增强版htop是我的首选,-d参数设置刷新间隔,-u按用户筛选进程。iotop和iftop分别监控磁盘和网络IO,这三个工具构成了我的性能分析铁三角。
4.2 进程控制技巧
ps -ef | grep nginx查找进程,kill -9是最后手段。更优雅的做法是先用kill -15发送SIGTERM信号。nohup和&的组合让进程在退出终端后继续运行,但更专业的做法是用screen或tmux。
5. 网络诊断工具集
5.1 连通性测试
ping和traceroute是基础,但mtr结合了两者功能。telnet已被nc(netcat)取代,测试端口连通性更推荐:
nc -zv example.com 805.2 高级网络分析
tcpdump抓包配合wireshark分析是解决复杂网络问题的终极武器。简单用法如:
tcpdump -i eth0 -nn 'port 80' -w capture.pcap6. 权限与用户管理
6.1 权限控制精髓
chmod 755和chown user:group要慎用。我更喜欢精确控制:chmod u=rwx,g=rx,o=。特殊权限如chmod +t设置粘滞位,chattr +i设置不可修改属性,这些在安全加固时很实用。
6.2 用户管理实践
useradd -m -s /bin/bash username创建用户时自动创建家目录并指定shell。passwd -l锁定账户比直接删除更安全。visudo编辑sudoers文件是必须掌握的技能。
7. 实用技巧合集
7.1 历史命令优化
在~/.bashrc中添加这些配置:
export HISTTIMEFORMAT="%F %T " export HISTSIZE=10000 export HISTFILESIZE=20000 shopt -s histappend7.2 终端多路复用
tmux的会话持久化功能让我不再担心SSH断开。基础操作:
tmux new -s session_name新建会话Ctrl+b d分离会话tmux attach -t session_name重新连接
7.3 快速跳转技巧
pushd和popd维护目录栈,比反复cd高效得多。cd ~-跳转到上一个工作目录,这个冷门技巧知道的人不多但很实用。
8. 常见问题排错指南
8.1 "没找到命令"解决方案
遇到command not found时:
which command查找命令路径echo $PATH检查PATH变量locate或find搜索可能安装的位置- 检查是否缺少依赖包
8.2 磁盘空间告急处理
快速定位大文件:
du -h --max-depth=1 / | sort -h清理日志文件:
find /var/log -type f -name "*.log" -size +100M -exec truncate -s 0 {} \;8.3 性能瓶颈分析
快速检查清单:
uptime查看负载free -h内存使用df -h磁盘空间iostat -x 1磁盘IOsar -n DEV 1网络流量
9. 命令组合实战案例
9.1 日志分析三板斧
查找最近1小时包含ERROR的日志并统计出现次数:
grep "$(date -d '1 hour ago' '+%b %d %H')" /var/log/app.log | grep ERROR | awk '{count[$5]++} END {for(i in count) print i,count[i]}'9.2 批量重命名技巧
将所有.jpg文件按日期重命名:
for f in *.jpg; do mv "$f" "$(date -r "$f" +%Y%m%d)_$f"; done9.3 系统信息一键获取
快速系统体检脚本:
echo "===== SYSTEM INFO =====" uname -a echo -e "\n===== DISK USAGE =====" df -h echo -e "\n===== MEMORY USAGE =====" free -h echo -e "\n===== TOP PROCESSES =====" ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head10. 环境配置与优化
10.1 Shell配置技巧
在~/.bashrc中添加这些实用别名:
alias ll='ls -alFh' alias grep='grep --color=auto' alias df='df -h' alias du='du -h' alias mkdir='mkdir -pv'10.2 SSH优化配置
~/.ssh/config文件配置示例:
Host * ServerAliveInterval 60 TCPKeepAlive yes Host myserver HostName server.example.com User myuser Port 2222 IdentityFile ~/.ssh/myserver_key10.3 历史命令增强
给历史命令加上时间戳和颜色:
export HISTTIMEFORMAT="\[\033[33m\]%F %T \[\033[0m\]" export PROMPT_COMMAND='history -a'掌握这些命令的关键不在于记忆,而在于理解其设计哲学。Linux命令就像乐高积木,简单的组合能创造出无限可能。我建议新手从实际需求出发,遇到问题先思考"哪些命令组合可以解决",而不是机械地搜索解决方案。这种思维转变后,命令行就不再是负担,而会成为你最得力的助手。