Update nexus: fix conflicts and sync local changes
This commit is contained in:
@@ -1,111 +1,111 @@
|
||||
---
|
||||
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
|
||||
- [[永久挂载]] — 网络存储与进程执行的关系
|
||||
---
|
||||
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
|
||||
- [[永久挂载]] — 网络存储与进程执行的关系
|
||||
|
||||
Reference in New Issue
Block a user