my-test / scripts /launchd_ctl.sh
Looknicemm's picture
Upload 18 files
dbe3386 verified
Raw
History Blame Contribute Delete
1.36 kB
#!/usr/bin/env bash
set -euo pipefail
SERVICE_NAME="com.chatgpt-register.web"
PLIST_PATH="${HOME}/Library/LaunchAgents/${SERVICE_NAME}.plist"
GUI_DOMAIN="gui/$(id -u)"
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
LOG_DIR="${PROJECT_DIR}/logs"
usage() {
echo "用法: $0 {start|stop|restart|status|logs|uninstall}"
}
cmd="${1:-}"
case "${cmd}" in
start)
launchctl bootstrap "${GUI_DOMAIN}" "${PLIST_PATH}" 2>/dev/null || true
launchctl enable "${GUI_DOMAIN}/${SERVICE_NAME}" 2>/dev/null || true
launchctl kickstart -k "${GUI_DOMAIN}/${SERVICE_NAME}"
;;
stop)
launchctl bootout "${GUI_DOMAIN}" "${PLIST_PATH}"
;;
restart)
launchctl bootout "${GUI_DOMAIN}" "${PLIST_PATH}" 2>/dev/null || true
launchctl bootstrap "${GUI_DOMAIN}" "${PLIST_PATH}"
launchctl enable "${GUI_DOMAIN}/${SERVICE_NAME}"
launchctl kickstart -k "${GUI_DOMAIN}/${SERVICE_NAME}"
;;
status)
launchctl print "${GUI_DOMAIN}/${SERVICE_NAME}"
;;
logs)
mkdir -p "${LOG_DIR}"
touch "${LOG_DIR}/web.stdout.log" "${LOG_DIR}/web.stderr.log"
tail -f "${LOG_DIR}/web.stdout.log" "${LOG_DIR}/web.stderr.log"
;;
uninstall)
launchctl bootout "${GUI_DOMAIN}" "${PLIST_PATH}" 2>/dev/null || true
rm -f "${PLIST_PATH}"
echo "已卸载 ${SERVICE_NAME}"
;;
*)
usage
exit 1
;;
esac