set -euo pipefail
stop_buck2d() {
echo "正在查找并停止 buck2d 进程..."
local pids=$(pgrep -f "buck2d")
if [ -z "$pids" ]; then
echo "未找到 buck2d 进程"
return 0
fi
echo "找到以下 buck2d 进程:$pids"
echo "发送 SIGTERM 信号..."
kill $pids || true
local timeout=10
while [ $timeout -gt 0 ]; do
if ! pgrep -f "buck2d" >/dev/null; then
echo "buck2d 已成功停止"
return 0
fi
echo "等待 buck2d 进程退出... ($timeout秒)"
sleep 1
timeout=$((timeout-1))
done
echo "发送 SIGKILL 信号..."
kill -9 $pids || true
if ! pgrep -f "buck2d" >/dev/null; then
echo "buck2d 已强制停止"
return 0
else
echo "警告:无法停止 buck2d 进程"
return 1
fi
}
unmount_path() {
local mount_point="$1"
if [ -z "$mount_point" ]; then
echo "错误:未指定挂载点"
return 1
fi
echo "检查挂载点:$mount_point"
echo "正在卸载挂载点:$mount_point"
if umount "$mount_point"; then
echo "卸载成功"
return 0
fi
echo "普通卸载失败,尝试强制卸载..."
if umount -l "$mount_point"; then
echo "延迟卸载成功"
return 0
fi
echo "错误:无法卸载 $mount_point"
return 1
}
main() {
local mount_point="/home/luxian/megatest/true_temp"
while [[ $# -gt 0 ]]; do
case $1 in
-m|--mount)
mount_point="$2"
shift 2
;;
*)
echo "未知参数:$1"
echo "用法:$0 --mount /path/to/mount-point"
return 1
;;
esac
done
if [ -z "$mount_point" ]; then
echo "错误:必须指定挂载点"
echo "用法:$0 --mount /path/to/mount-point"
return 1
fi
if [ "$(id -u)" -ne 0 ]; then
echo "警告:建议使用 sudo 运行此脚本以确保权限足够"
fi
stop_buck2d
unmount_path "/home/luxian/pass"
unmount_path "$mount_point"
echo "清理完成"
}
main "$@"