Download scripts/openclaw-gateway-ctl from SZFSPC/apple: direct link, hf CLI and curl.
- Browser
- Download file 5.95 kB
-
https://huggingface.co/spaces/SZFSPC/apple/resolve/main/scripts/openclaw-gateway-ctl
- Command line
-
hf download hf://spaces/SZFSPC/apple/scripts/openclaw-gateway-ctl
-
curl -L -o openclaw-gateway-ctl https://huggingface.co/spaces/SZFSPC/apple/resolve/main/scripts/openclaw-gateway-ctl
5.95 kB
| set -euo pipefail | |
| MANAGER_PID_FILE="/var/run/openclaw/manager.pid" | |
| LOG_FILE="${OPENCLAW_GATEWAY_CTL_LOG_FILE:-/var/log/openclaw/gateway-ctl.log}" | |
| ts() { date -u +"%Y-%m-%dT%H:%M:%SZ"; } | |
| log_info() { | |
| local msg="[$(ts)] [INFO] openclaw-gateway-ctl: $*" | |
| printf '%s\n' "$msg" | |
| mkdir -p "$(dirname "$LOG_FILE")" | |
| printf '%s\n' "$msg" >> "$LOG_FILE" | |
| } | |
| log_error() { | |
| local msg="[$(ts)] [ERROR] openclaw-gateway-ctl: $*" | |
| printf '%s\n' "$msg" >&2 | |
| mkdir -p "$(dirname "$LOG_FILE")" | |
| printf '%s\n' "$msg" >> "$LOG_FILE" | |
| } | |
| get_manager_pid() { | |
| if [[ -f "$MANAGER_PID_FILE" ]]; then | |
| local pid | |
| pid=$(cat "$MANAGER_PID_FILE" 2>/dev/null | tr -d '[:space:]') | |
| if [[ -n "$pid" ]] && kill -0 "$pid" 2>/dev/null; then | |
| echo "$pid" | |
| return 0 | |
| fi | |
| fi | |
| return 1 | |
| } | |
| get_gateway_pid() { | |
| local port="${OPENCLAW_GATEWAY_PORT:-18789}" | |
| local pid | |
| pid=$(lsof -ti :"$port" -sTCP:LISTEN 2>/dev/null | head -1 || true) | |
| if [[ -n "$pid" ]] && kill -0 "$pid" 2>/dev/null; then | |
| local comm | |
| comm=$(ps -p "$pid" -o comm= 2>/dev/null || true) | |
| if [[ "$comm" == *"openclaw"* ]]; then | |
| echo "$pid" | |
| return 0 | |
| fi | |
| fi | |
| return 1 | |
| } | |
| do_status() { | |
| local manager_pid gateway_pid | |
| manager_pid=$(get_manager_pid 2>/dev/null) || true | |
| gateway_pid=$(get_gateway_pid 2>/dev/null) || true | |
| if [[ -n "$manager_pid" ]]; then | |
| log_info "manager is running (PID: $manager_pid)" | |
| else | |
| log_info "manager is not running" | |
| fi | |
| if [[ -n "$gateway_pid" ]]; then | |
| log_info "gateway is running (PID: $gateway_pid)" | |
| else | |
| log_info "gateway is not running" | |
| fi | |
| if [[ -n "$manager_pid" && -n "$gateway_pid" ]]; then | |
| return 0 | |
| else | |
| return 1 | |
| fi | |
| } | |
| do_start() { | |
| local manager_pid | |
| manager_pid=$(get_manager_pid) || true | |
| if [[ -z "$manager_pid" ]]; then | |
| log_error "manager is not running, cannot start gateway" | |
| return 1 | |
| fi | |
| log_info "Sending SIGUSR1 to manager (PID: $manager_pid) to start gateway..." | |
| kill -USR1 "$manager_pid" 2>/dev/null || true | |
| local waited=0 | |
| local max_wait=60 | |
| while [[ $waited -lt $max_wait ]]; do | |
| sleep 2 | |
| waited=$((waited + 2)) | |
| local gateway_pid | |
| gateway_pid=$(get_gateway_pid 2>/dev/null) || true | |
| if [[ -n "$gateway_pid" ]]; then | |
| log_info "Gateway started successfully (PID: $gateway_pid, waited ${waited}s)" | |
| return 0 | |
| fi | |
| done | |
| log_error "Gateway failed to start after ${max_wait}s" | |
| if [[ -f /var/log/openclaw/gateway.stderr.log ]]; then | |
| log_error "Last 5 lines from gateway stderr:" | |
| tail -5 /var/log/openclaw/gateway.stderr.log | while IFS= read -r line; do | |
| log_error " $line" | |
| done | |
| fi | |
| return 1 | |
| } | |
| do_stop() { | |
| local gateway_pid | |
| gateway_pid=$(get_gateway_pid) || true | |
| if [[ -z "$gateway_pid" ]]; then | |
| log_error "gateway is not running" | |
| return 1 | |
| fi | |
| log_info "Stopping gateway process (PID: $gateway_pid)..." | |
| kill -TERM "$gateway_pid" 2>/dev/null || true | |
| log_info "Waiting for gateway to stop (max 30s)..." | |
| local waited=0 | |
| while [[ $waited -lt 30 ]]; do | |
| if ! kill -0 "$gateway_pid" 2>/dev/null; then | |
| log_info "Gateway stopped gracefully" | |
| return 0 | |
| fi | |
| sleep 1 | |
| waited=$((waited + 1)) | |
| done | |
| log_error "Gateway did not stop gracefully, force killing..." | |
| kill -9 "$gateway_pid" 2>/dev/null || true | |
| log_info "Gateway killed" | |
| } | |
| do_restart() { | |
| local manager_pid gateway_pid | |
| manager_pid=$(get_manager_pid) || true | |
| gateway_pid=$(get_gateway_pid) || true | |
| if [[ -z "$manager_pid" ]]; then | |
| log_error "manager is not running, cannot restart gateway" | |
| return 1 | |
| fi | |
| if [[ -n "$gateway_pid" ]]; then | |
| log_info "Stopping gateway process (PID: $gateway_pid)..." | |
| kill -TERM "$gateway_pid" 2>/dev/null || true | |
| sleep 1 | |
| fi | |
| log_info "Sending SIGUSR1 to manager (PID: $manager_pid) to restart gateway..." | |
| kill -USR1 "$manager_pid" 2>/dev/null || true | |
| local waited=0 | |
| local max_wait=60 | |
| while [[ $waited -lt $max_wait ]]; do | |
| sleep 2 | |
| waited=$((waited + 2)) | |
| gateway_pid=$(get_gateway_pid 2>/dev/null) || true | |
| if [[ -n "$gateway_pid" ]]; then | |
| log_info "Gateway restarted successfully (PID: $gateway_pid, waited ${waited}s)" | |
| return 0 | |
| fi | |
| done | |
| log_error "Gateway failed to restart after ${max_wait}s" | |
| if [[ -f /var/log/openclaw/gateway.stderr.log ]]; then | |
| log_error "Last 5 lines from gateway stderr:" | |
| tail -5 /var/log/openclaw/gateway.stderr.log | while IFS= read -r line; do | |
| log_error " $line" | |
| done | |
| fi | |
| return 1 | |
| } | |
| do_reload() { | |
| local gateway_pid | |
| gateway_pid=$(get_gateway_pid) || true | |
| if [[ -z "$gateway_pid" ]]; then | |
| log_error "gateway is not running" | |
| return 1 | |
| fi | |
| log_info "Sending SIGHUP to gateway (PID: $gateway_pid)..." | |
| kill -HUP "$gateway_pid" 2>/dev/null || true | |
| } | |
| ACTION="${1:-}" | |
| case "$ACTION" in | |
| start|START) | |
| do_start | |
| ;; | |
| stop|STOP) | |
| do_stop | |
| ;; | |
| restart|RESTART) | |
| do_restart | |
| ;; | |
| reload|RELOAD) | |
| do_reload | |
| ;; | |
| status|STATUS|"") | |
| do_status | |
| ;; | |
| *) | |
| echo "Usage: openclaw-gateway-ctl {start|stop|restart|reload|status}" | |
| echo "" | |
| echo " start - Start gateway (via manager)" | |
| echo " stop - Stop only gateway process (manager keeps running)" | |
| echo " restart - Stop gateway then start via manager (no bootstrap)" | |
| echo " reload - Send SIGHUP to gateway for config reload" | |
| echo " status - Show running status" | |
| exit 1 | |
| ;; | |
| esac | |