一、文件与目录操作(天天用,必须肌肉记忆)
| | |
|---|
| | ls -lh # 人性化显示大小 ls -la # 含隐藏文件 ls -lt # 按时间排序 |
| | cd /home # 绝对路径 cd .. # 返回上级 cd - # 回到上次目录 |
| | cp file.txt /tmp/ cp -r dir1 dir2 # 递归复制目录 |
| | mv old.txt new.txt # 重命名 mv file.txt /tmp/ # 移动 |
| | rm file.txt rm -rf dir/ # ⚠️递归强删,慎用! rm -i *.log # 逐个确认 |
| | |
| | |
| | find / -name "*.log" find . -type f -size +100M find . -mtime -1 # 1天内修改的 |
二、文件查看与编辑(排查问题第一步)
| | |
|---|
| | cat file.txt cat -n file.txt # 带行号 |
| | tail -f app.log # 🔥实时追踪日志 tail -100f app.log # 最后100行+实时 tail -n 50 file # 最后50行 |
| | |
| | less bigfile.log # j/k 上下翻行,/ 搜索,q 退出 |
| | grep "ERROR" app.log grep -rn "keyword" ./ # 🔥递归+行号 grep -i "error" log # 忽略大小写 grep -v "DEBUG" log # 排除含DEBUG的行 grep -A 3 "ERROR" log # 匹配行后3行 |
| | wc -l file.txt # 行数 cat log | grep ERROR | wc -l # 错误数 |
| | vim file.txt # i插入,esc退出编辑 :wq 保存退出 :q! 不保存退出 /keyword 搜索 :%s/old/new/g 全局替换 |
三、权限管理(面试常问:rwx是什么意思?)
权限格式:rwx rwx rwx → 所有者 | 同组 | 其他用户
r=4(读),w=2(写),x=1(执行)
755 = 所有者rwx(7) + 同组r-x(5) + 其他r-x(5)
644 = 所有者rw-(6) + 同组r--(4) + 其他r--(4)
| | |
|---|
| | chmod 755 script.sh chmod +x deploy.sh # 加执行权限 chmod -R 644 /var/www/ # 递归 |
| | chown user:group file.txt chown -R nginx:nginx /var/www/ |
| | sudo systemctl restart nginx sudo su - # 切换root |
四、进程管理(服务挂了怎么排查?)
| | |
|---|
| | ps aux | grep nginx # 🔥查nginx进程 ps -ef | grep java # 查java进程 ps aux --sort=-%mem | head # 按内存排序 |
| | top # 类似任务管理器 # P=按CPU排序 M=按内存排序 # 1=显示各CPU核心 |
| | htop # 需安装 yum/apt install htop |
| | kill -9 12345 # 强杀PID kill -15 12345 # 优雅终止 killall nginx # 按名称杀 |
| | nohup java -jar app.jar > log.out 2>&1 & # 🔥后台运行jar包,日志写入log.out |
| | systemctl start nginx # 启动 systemctl stop nginx # 停止 systemctl restart nginx # 重启 systemctl status nginx # 查看状态 systemctl enable nginx # 开机自启 |
五、网络排查(线上出问题最先用的命令)
| | |
|---|
| | netstat -tlnp # 🔥查看监听端口 netstat -anp | grep 8080 # 查8080端口 # 注意:CentOS7+用ss替代 |
| | ss -tlnp # 查看监听端口 ss -s # 连接数统计 |
| | lsof -i:8080 # 🔥谁占了8080端口 lsof -p 1234 # PID打开的文件 |
| | curl http://localhost:8080/api curl -X POST -d '{"k":"v"}' -H 'Content-Type:application/json' url curl -I url # 只看响应头 |
| | ping 192.168.1.1 ping -c 4 baidu.com # 发4个包 |
| | telnet 192.168.1.1 3306 # 🔥测MySQL端口通不通 |
| | wget https://example.com/file.tar.gz wget -c url # 断点续传 |
六、磁盘与内存(磁盘满了/内存爆了怎么办?)
| | |
|---|
| | df -h # 🔥人性化显示各分区 df -h /home # 看指定分区 |
| | du -sh /var/log # 🔥看某目录总大小 du -sh * | sort -rh | head # 找最大目录 |
| | free -h # 🔥人性化显示内存 # available才是真正可用内存! # buff/cache是可回收的 |
| | iostat -x 1 # 每秒刷新,看%util # %util接近100%说明磁盘瓶颈 |
| | vmstat 1 5 # 每秒1次共5次 # r列 > CPU核数 = CPU瓶颈 # si/so持续 > 0 = 内存不足在交换 |
七、打包与压缩(部署传输必备)
| | |
|---|
| | # 🔥记住 zcvf / zxvf 即可 tar -zcvf app.tar.gz app/ # 打包+gzip压缩 tar -zxvf app.tar.gz # 解压 tar -zxvf app.tar.gz -C /opt/ # 解压到指定目录 tar -tf app.tar.gz # 查看内容不解压 |
| | zip -r app.zip app/ unzip app.zip -d /opt/ |
| | scp file.txt user@192.168.1.1:/tmp/ scp -r dir/ user@host:/path/ # 传目录 scp user@host:/file . # 从远程拉取 |
| | rz # 上传(需安装lrzsz) sz file.txt # 下载到本地 |
八、系统信息与其他常用命令
| | |
|---|
| | uname -a # 内核版本等全部信息 uname -r # 内核版本号 |
| | date '+%Y-%m-%d %H:%M:%S' |
| | |
| | hostname # 查看主机名 hostname -I # 查看IP |
| | crontab -e # 编辑定时任务 crontab -l # 查看定时任务 # 格式:分 时 日 月 周 命令 # 例:0 2 * * * /opt/backup.sh # 每天凌晨2点 |
| | history | grep nginx # 搜历史命令 !! # 执行上一条命令 !123 # 执行第123条历史 |
| | which java # /usr/bin/java which nginx # /usr/sbin/nginx |
| | man ls # 查看ls完整手册 ls --help # 简版帮助 |
九、高频组合技(面试/实战直接用)
| |
|---|
| tail -f app.log | grep --color=auto ERROR |
| netstat -tlnp | grep 8080 或 lsof -i:8080 |
| kill -9 $(lsof -t -i:8080) |
| find / -type f -size +100M -exec ls -lh {} \; |
| grep -c "ERROR" app.log 或 grep "ERROR" app.log | wc -l |
| ps aux --sort=-%cpu | head -5 |
| ps aux --sort=-%mem | head -5 |
| sed -i 's/old/new/g' *.conf |
| ls -l | grep "^-" | wc -l |
| sed -n '/2026-07-01 10:00/,/2026-07-01 11:00/p' app.log |
附:tar 参数速记口诀
压缩:tar -zcvf app.tar.gz app/ → c = Create(创建)
解压:tar -zxvf app.tar.gz → x = eXtract(提取)
查看:tar -ztf app.tar.gz → t = lisT(列出)
四个固定字母:z(gzip)v(显示过程)f(指定文件名)
记住三个动词:c压 / x解 / t看 → 一辈子忘不了
写在最后
Linux命令不用全背,记住高频的20%就能覆盖日常80%的场景。面试官最关心的不是你会多少命令,而是你遇到问题知道用哪个命令排查:
📞服务起不来→ systemctl status / journalctl -u
📞端口被占→ lsof -i:端口 / netstat -tlnp
📞磁盘满了→ df -h → du -sh * → 找大文件删除
📞内存爆了→ free -h → top → 找占用最多的进程
📞日志报错→ tail -f | grep ERROR
📞网络不通→ ping → telnet → curl
这套排查思路比背100条命令更有价值。建议收藏本文,遇到问题当字典查。
—— 🍀七七不吃糖 · 持续分享 IT 从业者必备硬技能 ——