Linux 常用命令
面向运维、排障、服务器调试、网络排查场景,【系统基础】【网络排查】【进程/端口】【文件处理】【权限磁盘】【性能分析】【服务管理】。
一、系统基础命令
1. cd
切换目录
bash
cd /etc/network # 进入指定目录
cd ~ # 回到家目录
cd .. # 上一级目录
cd - # 返回上一次所在目录
2. ls
列出目录文件
bash
ls -l # 长格式,权限、大小、时间
ls -lh # 人类可读大小
ls -a # 显示隐藏文件
ls -lt # 按修改时间排序
3. pwd
打印当前工作目录
bash
pwd
4. cat / less / more
查看文件
bash
cat /etc/hosts # 小文件一次性输出
less /var/log/messages # 分页浏览(q退出,空格翻页)
tail -f /var/log/syslog # 实时跟踪日志
tail -n 100 xxx.log # 查看最后100行
head -n 20 xxx.log # 前20行
5. cp、mv、rm
bash
cp -r dir1 dir2 # 递归复制文件夹
mv oldname newname # 移动/重命名
rm -rf /tmp/test # 强制递归删除(高危!谨慎)
6. mkdir
bash
mkdir -p /data/logs/nginx # 递归创建多级目录
7. find 文件搜索(运维高频)
bash
find /etc -name "*.conf" # 在/etc下查找所有conf文件
find /var/log -size +100M # 查找大于100M文件
find . -type f -mtime -1 # 24小时内修改过的文件
8. grep 文本过滤
bash
grep "error" xxx.log # 匹配关键字
grep -i "warn" xxx.log # 忽略大小写
grep -v "debug" xxx.log # 反向匹配,排除debug
grep -A5 -B5 "Exception" xxx.log # 匹配行前后各5行
二、权限与用户
chmod 修改权限
bash
chmod 644 file.conf
chmod +x start.sh # 添加执行权限
chown 修改属主属组
bash
chown root:root /etc/hosts
chown -R nginx:nginx /var/www # 递归修改目录所有者
useradd / passwd / su
bash
useradd testuser
passwd testuser
su - root # 完整切换用户环境变量
三、磁盘、IO、空间排查
df 磁盘分区使用率
bash
df -h
du 查看目录占用
bash
du -sh /* # 统计根目录下各文件夹大小
du -sh /var/log
mount / umount 挂载
bash
mount /dev/sdb1 /data
umount /data
四、网络命令
1. ip(推荐,替代老旧ifconfig)
bash
ip a # 查看所有网卡IP
ip addr show eth0 # 指定网卡信息
ip link set eth0 up # 启用网卡
ip link set eth0 down # 关闭网卡
ip route # 查看路由表
ip route add 192.168.2.0/24 via 192.168.1.1 # 添加静态路由
ip route del default # 删除默认路由
2. ping 连通性测试
bash
ping www.baidu.com
ping -c 4 192.168.1.1 # 发送4个包停止
ping -i 0.5 192.168.1.1 # 间隔0.5秒发包(root)
3. traceroute / mtr 路由追踪(排链路丢包神器)
bash
traceroute 8.8.8.8
mtr --report 8.8.8.8 # 持续路由质量检测,看各跳丢包
mtr 192.168.1.1
4. ss(强烈推荐,替代netstat,速度更快)
端口、连接排查首选
bash
ss -tuln # 监听TCP/UDP端口(常用!)
ss -tan # 所有TCP连接,数字形式不解析域名
ss -tan state ESTABLISHED # 只看已建立连接
ss -lp # 查看端口对应进程
ss -s # 汇总连接统计
5. netstat(兼容老系统,新系统优先ss)
bash
netstat -tulnp
netstat -an | grep :80
6. curl / wget 应用层连通测试
bash
curl -I http://127.0.0.1:8080 # 只获取HTTP响应头
curl -v https://api.xxx.com # 详细握手过程,排查SSL、超时
curl --connect-timeout 3 192.168.1.1:22
wget http://xxx/file.iso
7. telnet / nc(ncat) 端口连通性
bash
telnet 192.168.1.100 3306
nc -zv 192.168.1.100 1-1000 # 批量扫描端口
nc -l 8888 # 监听端口做测试
8. tcpdump 抓包
bash
# 抓取eth0网卡所有流量
tcpdump -i eth0
# 只抓取目标端口80
tcpdump -i eth0 port 80
# 抓取指定源IP
tcpdump -i eth0 src 10.0.0.5
# 保存抓包文件,可用wireshark打开分析
tcpdump -i eth0 -w traffic.pcap
# 读取pcap文件
tcpdump -r traffic.pcap
# 过滤ICMP(ping包)
tcpdump icmp
9. hostname / DNS相关
bash
hostname # 查看主机名
cat /etc/resolv.conf # DNS配置
nslookup www.baidu.com
dig www.baidu.com # DNS解析详细信息
dig @114.114.114.114 www.baidu.com # 指定DNS服务器查询
host www.baidu.com
五、进程、服务、性能排查
ps 进程查看
bash
ps aux # 完整进程列表
ps -ef | grep nginx
top / htop 实时资源监控
bash
top # 系统负载、CPU、内存
# 快捷键:P按CPU排序,M按内存排序
htop # 更友好的增强版(需安装)
free 内存
bash
free -h
kill 进程终止
bash
kill 1234 # 优雅终止
kill -9 1234 # 强制杀死(尽量少用)
pkill nginx # 根据进程名批量杀
systemd 服务管理(CentOS7+/Ubuntu16.04+)
bash
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl enable nginx # 开机自启
systemctl disable nginx
systemctl status nginx # 查看服务状态
journalctl -u nginx -f # 实时查看服务日志
journalctl -u nginx --since "1 hour ago"
六、文本处理高级命令(日志分析必备)
awk 文本处理
bash
# 查看ss输出,提取第5列IP端口
ss -tan | awk '{print $5}'
# 统计访问日志IP访问次数
awk '{print $1}' access.log | sort | uniq -c | sort -nr
sed 流编辑器(替换文本)
bash
sed -i 's/oldstr/newstr/g' file.conf # 文件内直接替换
sed '/^#/d' file.conf # 删除注释行
sort & uniq 统计
bash
sort ip.txt | uniq -c
七、压缩解压
bash
tar -zcvf archive.tar.gz dir/ # 压缩
tar -zxvf archive.tar.gz # 解压gz
unzip file.zip
八、远程运维
bash
ssh root@192.168.1.100
ssh -p 2222 root@ip # 指定端口
scp local.file root@ip:/data/ # 上传文件
scp root@ip:/data/file ./ # 下载文件
九、高频排障命令组合
- 查看监听端口
bash
ss -tulnp
- 排查连接数、ESTABLISHED连接
bash
ss -tan state ESTABLISHED | wc -l
- 持续链路质量监控
bash
mtr 目标IP
- 抓包排查业务流量
bash
tcpdump -i eth0 port 443 -w ssl_traffic.pcap
- 日志检索报错上下文
bash
grep -A10 -B10 "Timeout" /var/log/app.log