Linux 常用命令
问题
前端工程师需要掌握哪些 Linux 常用命令?在日常开发和部署中如何使用?
答案
文件与目录操作
# 基础导航
pwd # 当前目录
ls -la # 列出所有文件(含隐藏)
cd /path/to/dir # 切换目录
cd - # 回到上一个目录
# 文件操作
cp -r src/ dest/ # 递归复制目录
mv old.txt new.txt # 移动/重命名
rm -rf node_modules/ # 强制递归删除
mkdir -p a/b/c # 递归创建目录
# 查看文件
cat file.txt # 查看全部内容
head -n 20 file.txt # 查看前 20 行
tail -f logs/app.log # 实时跟踪日志
less file.txt # 分页查看(支持搜索)
搜索与过滤
# 文件搜索
find . -name "*.ts" -type f # 按名称搜索文件
find . -mtime -7 -name "*.log" # 7 天内修改的日志
# 内容搜索
grep -rn "TODO" src/ # 递归搜索,显示行号
grep -rn "import.*axios" --include="*.ts" . # 搜索 ts 文件
grep -c "error" app.log # 统计匹配行数
# 管道组合
cat app.log | grep "ERROR" | tail -20 # 最近 20 条错误
ps aux | grep node # 查找 Node 进程
history | grep "docker" # 搜索历史命令
进程管理
# 查看进程
ps aux | grep node # 查找 Node 进程
top # 实时进程监控
htop # 交互式进程监控
# 端口占用
lsof -i :3000 # 查看 3000 端口被谁占用
netstat -tlnp # 查看所有监听端口
ss -tlnp # 同上(更现代)
# 终止进程
kill <PID> # 优雅终止
kill -9 <PID> # 强制终止
killall node # 终止所有 Node 进程
网络诊断
# DNS 查询
nslookup example.com # DNS 解析
dig example.com # 详细 DNS 信息
# 连通性检测
ping example.com # ICMP 连通性
curl -I https://example.com # 查看 HTTP 响应头
curl -X POST -H "Content-Type: application/json" \
-d '{"key":"value"}' http://localhost:3000/api
# 下载
wget https://example.com/file.zip
curl -O https://example.com/file.zip
权限与用户
# 文件权限
chmod 755 deploy.sh # rwxr-xr-x
chmod +x script.sh # 添加执行权限
chown -R www:www /var/www # 递归修改所有者
# 权限数字含义
# r=4 w=2 x=1
# 755 = rwx(所有者) + r-x(组) + r-x(其他)
# 644 = rw-(所有者) + r--(组) + r--(其他)
磁盘与内存
df -h # 磁盘使用情况
du -sh node_modules/ # 目录大小
du -sh * | sort -rh # 按大小排序当前目录内容
free -h # 内存使用情况
压缩与解压
# tar
tar -czf archive.tar.gz dir/ # 压缩
tar -xzf archive.tar.gz # 解压
# zip
zip -r archive.zip dir/ # 压缩
unzip archive.zip # 解压
实用组合命令
# 查找最大的 10 个文件
find . -type f -exec du -h {} + | sort -rh | head -10
# 统计代码行数
find src/ -name "*.ts" -o -name "*.tsx" | xargs wc -l | tail -1
# 批量替换文件内容
sed -i 's/old-text/new-text/g' src/**/*.ts
# 监控日志中的错误
tail -f app.log | grep --line-buffered "ERROR"
# 清理 Docker 无用镜像
docker system prune -af
常见面试问题
Q1: 线上服务出问题了,你怎么排查?
答案:
# 1. 先看日志
tail -100 /var/log/app/error.log
journalctl -u app --since "5 minutes ago"
# 2. 检查进程是否存活
ps aux | grep node
systemctl status app
# 3. 检查端口是否监听
ss -tlnp | grep 3000
# 4. 检查系统资源
top # CPU 和内存
df -h # 磁盘
free -h # 内存详情
# 5. 检查网络连通性
curl localhost:3000/health
Q2: 如何查看某个端口被谁占用?
答案:
lsof -i :3000
# 或
ss -tlnp | grep 3000
# 或
netstat -tlnp | grep 3000
Q3: chmod 755 是什么意思?
答案:
7=rwx(所有者可读写执行)、5=r-x(组和其他用户可读和执行,不能写)。常用于脚本文件和目录。
Q4: 如何后台运行一个 Node 服务?
答案:
# 简单方式
nohup node server.js > output.log 2>&1 &
# 推荐方式:使用 PM2 或 systemd
pm2 start server.js --name my-app
Q5: grep 和 find 的区别?
答案:
find:按文件名/属性搜索文件grep:在文件内容中搜索文本
find . -name "*.ts" # 找到所有 .ts 文件
grep -rn "useState" src/ # 在 src 下搜索包含 useState 的内容
相关链接
- Linux 命令大全
- 部署与运维 - PM2、Docker 部署
- Docker 与容器化 - Docker 常用命令