Files
nexus/wiki/concepts/进程管理.md
2026-04-22 04:03:04 +08:00

112 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "进程管理"
tags: [linux, process, backup, ubuntu]
date: 2026-04-26
---
# 进程管理 (Process Management)
## Definition
进程管理涵盖 Linux 系统中进程的创建、监控、控制和终止。在备份场景下,进程管理主要指如何安全地启动、监控和停止 rsync 备份进程。
## Starting Background Processes
### nohup (No Hang Up)
防止终端关闭导致进程被 SIGHUP 信号终止:
```bash
sudo nohup /usr/local/bin/rsync_backup.sh > /dev/null 2>&1 &
```
- `nohup`: 忽略挂起信号
- `> /dev/null 2>&1`: 重定向输出到空设备
- `&`: 后台运行
### screen / tmux (推荐)
创建持久化终端会话:
```bash
# 创建新会话
screen -S backup
# 运行脚本
sudo /usr/local/bin/rsync_backup.sh
# 脱离会话 (继续运行)
Ctrl + A + D
# 恢复会话
screen -r backup
```
**tmux 命令相同**,将 `screen` 替换为 `tmux`
## Stopping Processes
### SIGTERM vs SIGKILL
| Signal | Command | Behavior | Use Case |
|--------|---------|----------|----------|
| SIGTERM (15) | `killall rsync` | 优雅终止,允许进程完成当前写入并清理 | **首选**,防止数据损坏 |
| SIGKILL (9) | `killall -9 rsync` | 强制立即终止,无法清理 | 仅在进程卡死时使用 |
### Process Management Commands
```bash
# 查看 rsync 进程
ps aux | grep rsync
# 优雅停止所有 rsync 进程
sudo killall rsync
# 强制杀死(谨慎使用)
sudo killall -9 rsync
# 通过脚本名称停止
sudo pkill -f rsync_backup.sh
```
## Lock File Pattern
防止重复执行同一备份任务:
```bash
LOCKFILE="/tmp/rsync_backup.lock"
# 检查锁文件是否存在且进程存活
if [ -e ${LOCKFILE} ] && kill -0 `cat ${LOCKFILE}`; then
echo "备份任务已在运行中,跳过本次执行。"
exit
fi
# 创建锁文件(写入当前进程 PID
echo $$ > ${LOCKFILE}
# 脚本结束时清理锁文件
trap "rm -f ${LOCKFILE}" EXIT
```
## Signal Handling
- `SIGHUP (1)`: 终端关闭nohup 可屏蔽
- `SIGINT (2)`: Ctrl+C 中断
- `SIGTERM (15)`: 优雅终止请求
- `SIGKILL (9)`: 强制终止(不可捕获)
## Common Issues
### rsync Error Code 20
表示进程被手动中断SIGINT/SIGTERM
```bash
# 使用 nohup 避免此问题
sudo nohup /usr/local/bin/rsync_backup.sh > /dev/null 2>&1 &
```
### Temporary Files Residue
强行停止 rsync 后,目标目录可能残留 `.` 开头的临时文件:
```bash
# 清理残留临时文件(确保无 rsync 进程运行)
sudo find /mnt/nas_backup/ -name ".*" -type f -delete
```
## Related Concepts
- [[增量备份]] — 进程管理确保备份任务安全执行
- [[Cron定时任务]] — 后台进程由 Cron 自动调度
- [[挂载点检查]] — 进程执行前的安全验证
## See Also
- [[永久挂载]] — 网络存储与进程执行的关系