作为一个在Linux环境下摸爬滚打十多年的老运维,我深知命令行操作是Linux系统的灵魂所在。无论是日常文件管理、系统监控还是故障排查,熟练掌握基础命令都能让你事半功倍。这200个命令就像厨师的200把刀具,每把都有其特定用途,组合使用能解决90%的日常工作需求。
记得我刚入行时,面对黑底白字的终端窗口也是一头雾水。但经过多年实践验证,这套命令集合确实是Linux系统管理的基石。它们不仅适用于Ubuntu、CentOS等主流发行版,在嵌入式Linux、云服务器等场景也同样通用。下面我就按照实际工作场景分类,带你系统掌握这些"生存必备"的命令工具。
ls命令绝对是使用频率最高的命令之一,但很多人只停留在ls -l的层面。实际上这些参数组合更实用:
bash复制ls -lh # 人性化显示文件大小(K/M/G)
ls -lt # 按修改时间排序
ls -ltr # 逆序时间排序(最新文件在最后)
cd命令的这几个技巧能提升效率:
bash复制cd - # 返回上一个目录
cd ~ # 回到用户目录
cd ../.. # 向上跳两级目录
mkdir创建目录时,配合-p参数可以自动创建父目录:
bash复制mkdir -p project/{src,doc,test} # 一次性创建多级目录结构
cp命令在复制大文件时,建议使用-v参数显示进度:
bash复制cp -v large_file.iso /backup/ # 显示复制进度
mv命令除了移动文件,还是重命名的标准做法:
bash复制mv old_filename new_filename # 文件重命名
rm删除命令要格外小心,这个组合能防止误删:
bash复制alias rm='rm -i' # 加入~/.bashrc使删除前确认
重要提示:生产环境慎用
rm -rf,删除前务必确认路径。我曾见过有人误删/usr目录的惨剧。
cat适合查看小文件,大文件应该用:
bash复制less large_log.log # 可上下翻页搜索
grep的这几个变体很实用:
bash复制grep -r "error" /var/log/ # 递归搜索目录
grep -i "warning" file.txt # 忽略大小写
zgrep "exception" *.gz # 直接搜索压缩包
find命令的强大用法示例:
bash复制find /home -name "*.jpg" -size +1M # 找大于1MB的jpg
find /var/log -mtime +30 -delete # 删除30天前的日志
top命令的基础界面很多人看不懂,其实关键指标是:
更直观的htop需要额外安装:
bash复制sudo apt install htop # Ubuntu/Debian
sudo yum install htop # CentOS/RHEL
vmstat查看系统整体资源使用:
bash复制vmstat 1 5 # 每秒采样,共5次
iftop监控网络流量(需安装):
bash复制sudo iftop -i eth0 # 指定网卡监控
iostat查看磁盘IO情况:
bash复制iostat -x 1 # 显示扩展统计,每秒刷新
dmesg查看内核日志,排查硬件问题:
bash复制dmesg | grep -i error # 过滤错误信息
ps命令的实用组合:
bash复制ps aux --sort=-%mem | head # 按内存排序进程
ps -ef | grep nginx # 查找特定进程
kill的正确使用方式:
bash复制kill -9 1234 # 强制终止(慎用)
kill -HUP 5678 # 优雅重启进程
nohup让进程后台运行:
bash复制nohup ./start.sh & # 退出终端仍运行
useradd创建用户的完整流程:
bash复制sudo useradd -m -s /bin/bash newuser # 创建带家目录的用户
sudo passwd newuser # 设置密码
usermod修改用户属性:
bash复制sudo usermod -aG sudo newuser # 添加sudo权限
visudo安全编辑sudoers文件:
bash复制sudo visudo # 比直接编辑/etc/sudoers安全
chmod的数字表示法:
bash复制chmod 755 script.sh # owner:rwx, group:r-x, other:r-x
chown改变文件所有者:
bash复制sudo chown user:group file.txt
umask设置默认权限:
bash复制umask 022 # 新建文件默认644,目录755
systemctl现代Linux服务管理:
bash复制sudo systemctl start nginx # 启动
sudo systemctl enable nginx # 设置开机启动
journalctl查看系统日志:
bash复制journalctl -u nginx --since "1 hour ago" # 服务日志查询
ip命令取代了老旧的ifconfig:
bash复制ip addr show # 查看所有接口
ip route # 查看路由表
ss比netstat更高效:
bash复制ss -tulnp # 查看监听端口
ping的进阶用法:
bash复制ping -c 4 -i 0.5 example.com # 发送4个包,间隔0.5秒
telnet测试端口连通性:
bash复制telnet example.com 80 # 测试80端口
curl的常用参数:
bash复制curl -I https://example.com # 只显示响应头
curl -o file.zip http://example.com/file.zip # 下载文件
wget后台下载:
bash复制wget -bqc http://example.com/large.iso
ufw简化防火墙配置:
bash复制sudo ufw allow 22/tcp # 开放SSH端口
sudo ufw enable # 启用防火墙
iptables基础规则:
bash复制sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
APT(Debian/Ubuntu):
bash复制sudo apt update && sudo apt upgrade # 更新系统
sudo apt install package
sudo apt purge package # 彻底删除
YUM(RHEL/CentOS):
bash复制sudo yum install package
sudo yum remove package
标准三部曲:
bash复制./configure --prefix=/usr/local
make -j$(nproc) # 使用所有CPU核心编译
sudo make install
清理旧内核(Debian):
bash复制sudo apt autoremove --purge
查找大文件:
bash复制sudo du -h / | sort -rh | head -n 20
awk提取特定列:
bash复制ps aux | awk '{print $1,$4,$11}' # 显示用户、内存%、命令
sed替换文本:
bash复制sed -i 's/old/new/g' file.txt # 文件内全局替换
cut按分隔符提取:
bash复制cut -d: -f1 /etc/passwd # 提取所有用户名
合并错误与标准输出:
bash复制command > output.log 2>&1
实时输出同时保存到文件:
bash复制command | tee output.log
命令别名:
bash复制alias ll='ls -alF'
alias update='sudo apt update && sudo apt upgrade'
历史命令优化:
bash复制export HISTSIZE=10000
export HISTTIMEFORMAT="%F %T " # 记录时间戳
查看各分区使用情况:
bash复制df -h
定位大文件:
bash复制sudo du -h / | grep '[0-9\.]\+G'
清理日志文件:
bash复制sudo journalctl --vacuum-size=200M # 限制日志为200MB
查看负载平均值:
bash复制uptime
综合诊断:
bash复制dmesg | tail # 检查内核消息
vmstat 1 5 # 查看系统资源
top -c # 查看进程详情
检查连通性:
bash复制ping -c4 8.8.8.8
traceroute example.com
检查DNS解析:
bash复制nslookup example.com
dig example.com
| 功能 | 命令示例 |
|---|---|
| 压缩文件 | tar -czvf archive.tar.gz dir |
| 解压文件 | tar -xzvf archive.tar.gz |
| 查看命令位置 | which python |
| 查看命令手册 | man ls |
| 计算文件哈希 | sha256sum file.iso |
优化.bashrc配置:
bash复制# 显示git分支(需要git-prompt支持)
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1 " (%s)")\$ '
# 安全提示
alias cp='cp -i'
alias mv='mv -i'
man command或command --helptldr命令(需要安装)掌握这200个命令后,你会发现Linux系统就像一本打开的书,所有运行状态都变得透明可见。建议每天练习几个命令,结合实际工作加深理解。记住,真正的熟练不在于死记硬背,而在于理解每个命令背后的设计哲学和使用场景。