|
@@ -0,0 +1,135 @@
|
|
|
|
|
+#!/bin/bash
|
|
|
|
|
+#
|
|
|
|
|
+# 双摄像头联动抓拍系统 - 服务安装脚本
|
|
|
|
|
+#
|
|
|
|
|
+# 使用方法:
|
|
|
|
|
+# sudo ./install-service.sh # 安装并启用服务
|
|
|
|
|
+# sudo ./install-service.sh remove # 移除服务
|
|
|
|
|
+#
|
|
|
|
|
+
|
|
|
|
|
+set -e
|
|
|
|
|
+
|
|
|
|
|
+# 配置
|
|
|
|
|
+SERVICE_NAME="dual-camera"
|
|
|
|
|
+SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
|
|
|
|
|
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
|
+
|
|
|
|
|
+# 颜色输出
|
|
|
|
|
+RED='\033[0;31m'
|
|
|
|
|
+GREEN='\033[0;32m'
|
|
|
|
|
+YELLOW='\033[1;33m'
|
|
|
|
|
+NC='\033[0m' # No Color
|
|
|
|
|
+
|
|
|
|
|
+print_info() {
|
|
|
|
|
+ echo -e "${GREEN}[INFO]${NC} $1"
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+print_warn() {
|
|
|
|
|
+ echo -e "${YELLOW}[WARN]${NC} $1"
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+print_error() {
|
|
|
|
|
+ echo -e "${RED}[ERROR]${NC} $1"
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+# 检查 root 权限
|
|
|
|
|
+check_root() {
|
|
|
|
|
+ if [[ $EUID -ne 0 ]]; then
|
|
|
|
|
+ print_error "此脚本需要 root 权限,请使用 sudo 运行"
|
|
|
|
|
+ exit 1
|
|
|
|
|
+ fi
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+# 安装服务
|
|
|
|
|
+install_service() {
|
|
|
|
|
+ print_info "开始安装 ${SERVICE_NAME} 服务..."
|
|
|
|
|
+
|
|
|
|
|
+ # 检查服务文件是否存在
|
|
|
|
|
+ if [[ -f "${SERVICE_FILE}" ]]; then
|
|
|
|
|
+ print_warn "服务文件已存在,先停止并禁用旧服务..."
|
|
|
|
|
+ systemctl stop ${SERVICE_NAME} 2>/dev/null || true
|
|
|
|
|
+ systemctl disable ${SERVICE_NAME} 2>/dev/null || true
|
|
|
|
|
+ fi
|
|
|
|
|
+
|
|
|
|
|
+ # 复制服务文件
|
|
|
|
|
+ print_info "复制服务文件到 ${SERVICE_FILE}..."
|
|
|
|
|
+ cp "${SCRIPT_DIR}/dual-camera.service" "${SERVICE_FILE}"
|
|
|
|
|
+
|
|
|
|
|
+ # 设置权限
|
|
|
|
|
+ chmod 644 "${SERVICE_FILE}"
|
|
|
|
|
+
|
|
|
|
|
+ # 重载 systemd
|
|
|
|
|
+ print_info "重载 systemd 配置..."
|
|
|
|
|
+ systemctl daemon-reload
|
|
|
|
|
+
|
|
|
|
|
+ # 启用服务
|
|
|
|
|
+ print_info "启用开机自启动..."
|
|
|
|
|
+ systemctl enable ${SERVICE_NAME}
|
|
|
|
|
+
|
|
|
|
|
+ print_info "服务安装完成!"
|
|
|
|
|
+ echo ""
|
|
|
|
|
+ echo "常用命令:"
|
|
|
|
|
+ echo " 启动服务: sudo systemctl start ${SERVICE_NAME}"
|
|
|
|
|
+ echo " 停止服务: sudo systemctl stop ${SERVICE_NAME}"
|
|
|
|
|
+ echo " 重启服务: sudo systemctl restart ${SERVICE_NAME}"
|
|
|
|
|
+ echo " 查看状态: sudo systemctl status ${SERVICE_NAME}"
|
|
|
|
|
+ echo " 查看日志: sudo journalctl -u ${SERVICE_NAME} -f"
|
|
|
|
|
+ echo ""
|
|
|
|
|
+
|
|
|
|
|
+ read -p "是否立即启动服务?[y/N] " -n 1 -r
|
|
|
|
|
+ echo
|
|
|
|
|
+ if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
|
|
|
+ print_info "启动服务..."
|
|
|
|
|
+ systemctl start ${SERVICE_NAME}
|
|
|
|
|
+ sleep 2
|
|
|
|
|
+ systemctl status ${SERVICE_NAME} --no-pager || true
|
|
|
|
|
+ fi
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+# 移除服务
|
|
|
|
|
+remove_service() {
|
|
|
|
|
+ print_info "开始移除 ${SERVICE_NAME} 服务..."
|
|
|
|
|
+
|
|
|
|
|
+ # 停止服务
|
|
|
|
|
+ print_info "停止服务..."
|
|
|
|
|
+ systemctl stop ${SERVICE_NAME} 2>/dev/null || true
|
|
|
|
|
+
|
|
|
|
|
+ # 禁用服务
|
|
|
|
|
+ print_info "禁用开机自启动..."
|
|
|
|
|
+ systemctl disable ${SERVICE_NAME} 2>/dev/null || true
|
|
|
|
|
+
|
|
|
|
|
+ # 删除服务文件
|
|
|
|
|
+ if [[ -f "${SERVICE_FILE}" ]]; then
|
|
|
|
|
+ print_info "删除服务文件..."
|
|
|
|
|
+ rm -f "${SERVICE_FILE}"
|
|
|
|
|
+ fi
|
|
|
|
|
+
|
|
|
|
|
+ # 重载 systemd
|
|
|
|
|
+ print_info "重载 systemd 配置..."
|
|
|
|
|
+ systemctl daemon-reload
|
|
|
|
|
+
|
|
|
|
|
+ print_info "服务已移除!"
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+# 主函数
|
|
|
|
|
+main() {
|
|
|
|
|
+ case "${1:-install}" in
|
|
|
|
|
+ install)
|
|
|
|
|
+ check_root
|
|
|
|
|
+ install_service
|
|
|
|
|
+ ;;
|
|
|
|
|
+ remove|uninstall)
|
|
|
|
|
+ check_root
|
|
|
|
|
+ remove_service
|
|
|
|
|
+ ;;
|
|
|
|
|
+ *)
|
|
|
|
|
+ echo "用法: $0 [install|remove]"
|
|
|
|
|
+ echo ""
|
|
|
|
|
+ echo " install - 安装并启用服务(默认)"
|
|
|
|
|
+ echo " remove - 停止并移除服务"
|
|
|
|
|
+ exit 1
|
|
|
|
|
+ ;;
|
|
|
|
|
+ esac
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+main "$@"
|