04 · Linux 服务器入门:进程/权限/日志/定时
前端的第一台服务器通常从"会
ssh上去"到"敢在上面排障"之间隔着一层恐惧。本篇把进程、权限、日志、定时任务四个最常见场景讲透:每个场景前端怎么类比、命令是什么、出事怎么查。先给结论:90% 的服务器排障是"看进程活着吗、端口通吗、日志报什么、权限够吗"。
速览卡
| 项 | 内容 |
|---|---|
| 一句话定位 | 前端第一台服务器要会的四件事:进程、权限、日志、定时 |
| 核心内容 | SSH 登录、进程与端口、用户与权限、日志查看、cron 定时、排障路径 |
| 读完能回答 | 服务起不来先看什么?怎么查端口被谁占了?定时任务为什么不执行? |
| 相关板块 | D02 · 部署 CI/CD | D01 · Docker | C12 · 错误处理日志配置 |
一、先给结论:一次标准排障路径
text
① 服务在跑吗? ps / systemctl status
② 端口通吗? ss -lntp / curl
③ 日志报什么? journalctl / tail -f
④ 权限够吗? ls -l / whoami一句话:按这个顺序走,大部分"服务器问题"三分钟内能定位到层。别一上来就重启,先看日志。
二、SSH 与基础操作:像开一台远程电脑
bash
ssh deploy@your-server.com # 登录
ssh-keygen -t ed25519 # 生成本机密钥
ssh-copy-id deploy@your-server # 免密登录| 前端类比 | Linux 对应 |
|---|---|
| 打开终端 | ssh 进服务器 |
| 查看当前目录 | pwd / ls -la |
| 查看文件内容 | cat / less / tail |
| 切换目录/创建 | cd / mkdir -p |
安全底线:用密钥而非密码登录、禁用 root 直接登录、换非默认端口前先确认防火墙,细节见 S06 运维安全。
三、进程:服务活着吗、谁在跑
3.1 查进程
bash
ps aux | grep python # 找特定进程
systemctl status myapp # systemd 管理的服务状态
top / htop # 实时资源占用3.2 查端口:为什么 502 / Connection refused
bash
ss -lntp # 看监听端口与进程
curl -v http://127.0.0.1:8000/health # 本机试探服务| 现象 | 常见原因 |
|---|---|
| 端口没监听 | 进程没起来 / 绑定错了 IP |
| 端口在监听但外部不通 | 防火墙 / 安全组未放行 |
| 端口被占 | 旧进程没退干净,kill 后再起 |
前端类比:就像本机
localhost:3000起不来——先看进程,再看端口,再看日志。
四、用户与权限:别用 root 跑业务
bash
whoami # 我是谁
adduser deploy # 新建部署用户
chown -R deploy:deploy /app # 改属主
chmod +x script.sh # 加执行权限| 概念 | 说明 |
|---|---|
| root | 有全部权限,出事的爆炸半径最大 |
| 普通用户 | 日常部署与运行用 |
| 权限位 | r 读 / w 写 / x 执行 |
sudo | 临时提权,配合最小授权 |
与最小权限的关系:S06 讲原则,这里讲命令。至少做到"业务进程非 root、文件属主明确、敏感目录不给其他用户写"。
五、日志:服务器最诚实的证人
bash
journalctl -u myapp -f # systemd 服务实时日志
tail -f /var/log/myapp/app.log # 常规应用日志
grep ERROR /var/log/app/*.log # 过滤错误| 场景 | 命令 |
|---|---|
| 服务刚启动就挂 | journalctl -u myapp -n 50 看启动报错 |
| 运行中偶发错误 | tail -f 边复现边看 |
| 按时间检索 | journalctl --since "10 min ago" |
| 磁盘/系统层面 | df -h、free -h、dmesg |
前端类比:
console.log是你的第一手线索,服务器日志同理。前提是应用把日志打到 stdout(容器/服务管理统一收集),否则重启后无从查起。
六、定时任务:cron 与 systemd timer
bash
crontab -e # 编辑当前用户定时任务
crontab -l # 查看已有任务
# 每分钟执行一次清理脚本
* * * * * /opt/app/cleanup.sh| 字段 | 含义 |
|---|---|
| 分 时 日 月 周 | 依次对应,* 表示任意 |
0 2 * * * | 每天 02:00 |
*/10 * * * * | 每 10 分钟 |
定时任务最常见的坑:环境变量与交互 shell 不同、脚本没加执行权限、路径是相对路径。写脚本时用绝对路径 + 显式日志输出,出错才有迹可循。
七、自检清单
- [ ] 会用 SSH 密钥登录,禁用密码与 root 直连
- [ ] 能按"进程→端口→日志→权限"路径定位一次故障
- [ ] 业务进程非 root 运行,文件属主清晰
- [ ] 应用日志打到 stdout,能
tail -f实时看 - [ ] 定时任务用绝对路径,输出落日志,能查是否执行
八、常见误区
| 误区 | 事实 |
|---|---|
| "重启就好" | 重启前先看日志,否则同样的错会再来 |
| "root 最方便" | 权限最大,误操作与入侵的后果最严重 |
| "端口没通就找防火墙" | 先确认进程在跑、端口在监听,再谈防火墙 |
| "定时任务没跑是 cron 坏了" | 常见原因是脚本权限、路径、环境变量 |
| "日志丢了重启前看不到" | 不落盘/不打 stdout 的日志重启即失 |
九、动手练习
练习 A:排一次故障
故意用一个错误端口启动服务,按"进程→端口→日志"路径定位,记录每一步命令与结论。
练习 B:建部署用户
新建 deploy 用户、配密钥登录、禁用 root 密码登录,用新用户完成一次部署。
练习 C:写一个定时任务
写一个输出时间戳到日志的脚本,配 cron 每分钟执行,验证执行且权限、路径都正确。
相关文档
本区
- 02 · 部署与 CI/CD —— 发布与回滚流程
- 01 · Docker 与容器化 —— 容器内的进程与日志
- D 域 README
其他域
- C12 · 错误处理日志与配置 —— 应用侧日志规范
- C08 · 可观测性 —— 日志/指标/告警体系
- S06 · 运维安全 —— 权限与密钥管理