| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- #!/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 "$@"
|