😫 服务器CPU飙到100%,不知道哪个进程在搞鬼?
😫 磁盘满了,不知道删哪、不敢乱删?
😫 进程挂了,找不到原因、日志报错没头绪?
😫 想查个错误日志,在几十万行里大海捞针?
答案是:掌握Linux命令,你就是服务器的"主治医生"——诊断、开药、救命,全在一行行命令里。
# 列出文件(含隐藏、详细信息)
ls -la# 长格式显示所有文件
# 查找文件
find /var/log -name "*.log" -mtime -7# 7天内修改的log
# 复制、移动、删除
cp -r src/ dest/# 递归复制目录
mv old.txt new.txt# 移动/重命名
rm -rf dir/# 递归强制删除(慎用!)
# 创建目录、权限
mkdir -p /path/to/dir# 递归创建
chmod 755 script.sh# 可执行权限
chown user:group file# 修改属主属组
# grep:搜索文本
grep -r "ERROR" /var/log/nginx/ # 递归搜索ERROR
grep -E "error|ERROR" app.log # 正则匹配
# awk:按列处理
awk '{print $1, $7}' access.log # 打印第1、7列(IP和URL)
awk -F: '{print $1}' /etc/passwd # 以冒号分隔,打印用户名
# sed:流式替换
sed -i 's/old/new/g' config.conf # 全局替换
sed -n '10,20p' file.txt # 打印第10-20行
# 进程查看
ps aux# 查看所有进程
top# 实时监控(按P按CPU排序)
htop# 更友好的top(需安装)
# 进程控制
kill -9 PID# 强制结束进程
# 服务管理
systemctl start nginx# 启动服务
systemctl status nginx# 查看状态
journalctl -u nginx -f# 实时查看日志
# 资源查看
free -h# 内存使用
df -h# 磁盘空间
du -sh /var/log/*# 目录大小
# 连通性测试
ping -c 4 baidu.com# ping 4次
curl -I https://example.com# 获取HTTP头
wget https://example.com/file.tar.gz# 下载文件
# 端口与连接
netstat -tlnp# 监听端口及进程
ss -tlnp# 更快的替代(推荐)
# 端口扫描、抓包
nmap -p 80,443 192.168.1.1# 扫描端口
tcpdump -i eth0 port 80# 抓80端口包
# 用户管理
useradd -m -s /bin/bash newuser# 创建用户
usermod -aG sudo newuser# 加入sudo组
passwd newuser# 修改密码
# 权限深入
chmod 755 dir# rwxr-xr-x
chmod u+x script.sh# 仅给属主加执行
chown -R www:www /var/www# 递归改属主
# 默认权限
umask# 查看默认掩码(022=目录755文件644)
# 统计访问日志TOP10 IP
cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10
# 统计ERROR出现次数
grep -c "ERROR" app.log
# 实时跟踪日志并过滤
tail -f /var/log/nginx/error.log | grep --line-buffered "500"
# 输出重定向
command > output.txt # 覆盖写入
command >> output.txt # 追加写入
command 2>&1 | tee log.txt # 同时输出到屏幕和文件
2017年,某云厂商工程师误执行 rm -rf /*,导致客户生产环境数据被删,损失惨重。rm -rf 会递归强制删除,不经过回收站。执行前务必 pwd 确认路径,或使用 rm -rf ./dir 限定范围。永远不要在生产环境随意执行!
Linux命令是运维的母语,学会了你就能和服务器"说话"。