vault backup: 2026-11-07 16:33:44

This commit is contained in:
cheney
2026-11-07 16:33:55 +08:00
commit 7015312702
1208 changed files with 132432 additions and 0 deletions
+119
View File
@@ -0,0 +1,119 @@
## Linux 下 `bg` / `fg` 的典型用法
1. 启动一个长时间运行的前台进程
```bash
$ tar czf huge.tgz /very/big/dir
# 终端被占用
```
2. 挂起(Suspend)该进程
按下 `Ctrl-Z`
```
[1]+ Stopped tar czf huge.tgz /very/big/dir
```
3. 查看当前 shell 的作业列表
```bash
$ jobs
[1]+ Stopped tar czf huge.tgz /very/big/dir
```
4. 让被挂起的进程在 **后台** 继续运行
```bash
$ bg %1 # “%1” 对应 jobs 输出的作业号
[1]+ tar czf huge.tgz /very/big/dir &
```
5. 把后台作业切回 **前台**
```bash
$ fg %1
tar czf huge.tgz /very/big/dir
```
6. 启动时就丢到后台(可选)
```bash
$ tar czf huge.tgz /very/big/dir &
[1] 12345
```
7. 配合 `disown` 避免挂起时收到 SIGHUP(可选)
```bash
$ disown %1
```
> 提示
> - `%+` 或 `%%` 指“当前作业”;`%-` 指“前一个作业”。
> - 没有参数时,`bg`/`fg` 默认操作当前作业。
在Windows操作系统中,没有与Unix/Linux的 `fg`(前台恢复)和 `bg`(后台运行)完全等效的直接命令,因为Windows的进程管理机制不同。但可以通过以下方法实现类似功能:
---
### **Windows 替代方案**
#### 1. **启动后台进程**
- **CMD 命令提示符**:
```cmd
start /B your_command.exe :: 后台启动(不创建新窗口)
start "" your_command.exe :: 启动并最小化到后台(创建新窗口)
```
- **PowerShell**:
```powershell
Start-Job -ScriptBlock { your_command.exe } # 创建后台作业
```
#### 2. **管理后台进程**
- **查看所有进程**:
```cmd
tasklist :: CMD中查看进程列表
```
```powershell
Get-Process :: PowerShell中查看进程
Get-Job :: 查看后台作业
```
- **挂起/恢复进程**:
- 使用 **`Suspend-Process`** 和 **`Resume-Process`**(需 **管理员权限**):
```powershell
Suspend-Process -Id <PID> # 挂起进程(类似Ctrl+Z)
Resume-Process -Id <PID> # 恢复进程(类似fg)
```
- 工具替代:使用 **[Sysinternals Suite](https://learn.microsoft.com/zh-cn/sysinternals/)** 中的:
- `pssuspend.exe <PID>` 挂起进程
- `pssuspend.exe -r <PID>` 恢复进程
#### 3. **将进程移到前台**
- 无直接命令,需手动操作:
- 通过任务管理器找到进程并激活窗口。
- 使用 `start /WAIT your_command.exe` 在CMD中等待前台完成。
---
### **PowerShell 作业管理示例**
```powershell
# 启动后台作业
$job = Start-Job -ScriptBlock { ping www.example.com }
# 查看作业
Get-Job
# 恢复作业到前台(等待输出)
Receive-Job -Id $job.Id -Wait
# 终止作业
Stop-Job -Id $job.Id
```
---
### **关键差异说明**
- **作业控制机制**:
Windows不原生支持Shell层的作业挂起(`Ctrl+Z`),而是依赖进程级API。
- **权限要求**:
挂起/恢复进程需管理员权限,且可能影响稳定性。
- **推荐工具**:
使用 **PowerShell** 或 **Sysinternals工具集** 实现最接近的功能。
> **建议**:对于复杂任务,推荐使用PowerShell脚本或第三方工具(如Cygwin/WSL)模拟Unix环境。