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

2.8 KiB
Raw Blame History

title, tags, date
title tags date
进程管理
linux
process
backup
ubuntu
2026-04-26

进程管理 (Process Management)

Definition

进程管理涵盖 Linux 系统中进程的创建、监控、控制和终止。在备份场景下,进程管理主要指如何安全地启动、监控和停止 rsync 备份进程。

Starting Background Processes

nohup (No Hang Up)

防止终端关闭导致进程被 SIGHUP 信号终止:

sudo nohup /usr/local/bin/rsync_backup.sh > /dev/null 2>&1 &
  • nohup: 忽略挂起信号
  • > /dev/null 2>&1: 重定向输出到空设备
  • &: 后台运行

screen / tmux (推荐)

创建持久化终端会话:

# 创建新会话
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

# 查看 rsync 进程
ps aux | grep rsync

# 优雅停止所有 rsync 进程
sudo killall rsync

# 强制杀死(谨慎使用)
sudo killall -9 rsync

# 通过脚本名称停止
sudo pkill -f rsync_backup.sh

Lock File Pattern

防止重复执行同一备份任务:

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

# 使用 nohup 避免此问题
sudo nohup /usr/local/bin/rsync_backup.sh > /dev/null 2>&1 &

Temporary Files Residue

强行停止 rsync 后,目标目录可能残留 . 开头的临时文件:

# 清理残留临时文件(确保无 rsync 进程运行)
sudo find /mnt/nas_backup/ -name ".*" -type f -delete

See Also