Day 5:本周串联实操
Day 5:本周串联实操
今日目标:权限 → 后台进程 → 进程管理 → 前后台切换 → 重定向,一整条链路串起来 🎯
命令速览(本周全部命令)
whoami id groups chmod chown su sudo ps top kill pkill jobs fg bg Ctrl+Z > >> 2> 2>&1 | <<EOF
场景一:部署一个模拟 Web 服务并管理它
你用
python3 -m http.server(或nc -l)模拟一个 Web 服务,完成部署 → 后台化 → 监控 → 杀进程的全流程。
操作流程:
第一步:准备服务脚本
1 | cd /tmp |
第二步:后台启动与监控
./server.sh > server.log 2>&1 &——后台启动,输出重定向到日志echo $!——记录后台进程 PID($!是上一个后台进程的 PID)jobs——确认任务在后台运行tail -f server.log——实时查看日志输出Ctrl+Z挂起tail,bg让它在后台继续
第三步:进程查找与管理
ps aux | grep server.sh | grep -v grep——找到服务进程pgrep -fl server——另一种方式查找top -p <PID>——只看这个进程的资源占用kill -15(TERM 信号)<PID>——优雅终止,给进程清理资源的机会ps aux | grep server.sh——确认已终止
第四步:权限实验
sudo chown root:root server.sh——改所有权ls -l server.sh——验证权限./server.sh &——以自己身份运行,应该可以sudo ./server.sh &——以 root 身份运行一版ps aux | grep server.sh——能看到两个 server.sh,一个属于你一个属于 root
第五步:静默清理
sudo pkill -f server.sh——全部杀掉(需 sudo 才能杀掉 root 拥有的进程)ps aux | grep server.sh | grep -v grep——确认无残留rm -f server.sh server.log
场景二:权限故障模拟
1 | mkdir /tmp/permtest |
💪 今日必刷(全部终端实操)
- 写一个 while 循环脚本(或 sleep 命令),后台启动 2 个实例,输出分别重定向到不同的日志文件
- 用
ps找到这 2 个进程,对比它们的 PID、父进程、启动时间 - 用
kill -15(TERM 信号)终止其中一个,用kill -9(KILL 信号)终止另一个——理解两种信号的差异 - 模拟场景:创建文件 → chmod 000 → cat 报错 → chmod 644 → cat 成功
- 排错题:你
./server.sh &后台启动后关闭了终端,重新登录后发现进程没了——为什么?如何让进程在终端关闭后继续运行?(提示:nohup) - 排错题:
ps aux输出过多,你想找到nginx进程,执行ps aux | grep nginx,但每次结果都包含 grep 自身——如何过滤干净?
📚 命令详解
| 命令 | 详细参考 |
|---|---|
whoami |
权限与用户管理-whoami |
id |
权限与用户管理-id |
groups |
权限与用户管理-id |
chmod |
权限与用户管理-chmod |
chown |
权限与用户管理-chown |
su |
权限与用户管理-su |
sudo |
权限与用户管理-sudo |
ps |
进程管理-ps |
top |
进程管理-top |
kill |
进程管理-kill |
pkill |
进程管理-pkill |
jobs |
bg-fg-jobs |
fg |
bg-fg-jobs |
bg |
bg-fg-jobs |