Skip to content

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 每分钟执行,验证执行且权限、路径都正确。


相关文档 ​

本区 ​

其他域 ​