--- 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 - [[永久挂载]] — 网络存储与进程执行的关系