Systemd Detectiion in Start/Stop/Status
This commit is contained in:
parent
b84f4475e0
commit
ee3b315a98
|
|
@ -53,6 +53,16 @@ resolve_dirs() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
use_systemd() {
|
||||||
|
# Check if systemd user mode is available and service exists
|
||||||
|
if systemctl --user status >/dev/null 2>&1; then
|
||||||
|
# Check if our service file exists
|
||||||
|
if systemctl --user list-unit-files | grep -q "^sdl-mgr.service"; then
|
||||||
|
return 0 # Use systemd
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
return 1 # Use manual scripts
|
||||||
|
}
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# Main
|
# Main
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,17 @@
|
||||||
# start-sdl-mgr.sh - Script to start SDL Manager
|
# start-sdl-mgr.sh - Script to start SDL Manager
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
use_systemd() {
|
||||||
|
# Check if systemd user mode is available and service exists
|
||||||
|
if systemctl --user status >/dev/null 2>&1; then
|
||||||
|
# Check if our service file exists
|
||||||
|
if systemctl --user list-unit-files | grep -q "^sdl-mgr.service"; then
|
||||||
|
return 0 # Use systemd
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
return 1 # Use manual scripts
|
||||||
|
}
|
||||||
|
|
||||||
# Get $SDL_HOME directory from SCRIPT PATH
|
# Get $SDL_HOME directory from SCRIPT PATH
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
SDL_HOME="$(cd "$SCRIPT_DIR/.." && pwd)"
|
SDL_HOME="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||||
|
|
@ -48,5 +59,9 @@ echo " Node: ${NODE_BIN}"
|
||||||
export PATH="${NODE_BIN_DIR}:${PATH}"
|
export PATH="${NODE_BIN_DIR}:${PATH}"
|
||||||
cd "${SDL_MGR_APP_DIR}"
|
cd "${SDL_MGR_APP_DIR}"
|
||||||
|
|
||||||
# Start in foreground
|
if use_systemd; then
|
||||||
"${NPM_BIN}" start &
|
systemctl --user start sdl-mgr
|
||||||
|
else
|
||||||
|
# Manual background start logic
|
||||||
|
"${NPM_BIN}" start &
|
||||||
|
fi
|
||||||
|
|
@ -2,20 +2,35 @@
|
||||||
# status-sdl-mgr.sh - Script to show status of SDL Manager
|
# status-sdl-mgr.sh - Script to show status of SDL Manager
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
# Get sdl-mgr PID
|
use_systemd() {
|
||||||
SDL_MGR_PID=""
|
# Check if systemd user mode is available and service exists
|
||||||
for pid in $(pgrep -f 'node' 2>/dev/null || true); do
|
if systemctl --user status >/dev/null 2>&1; then
|
||||||
cwd=$(readlink /proc/$pid/cwd 2>/dev/null || true)
|
# Check if our service file exists
|
||||||
if [[ "$cwd" == *"sdl-mgr"* ]]; then
|
if systemctl --user list-unit-files | grep -q "^sdl-mgr.service"; then
|
||||||
SDL_MGR_PID="$pid"
|
return 0 # Use systemd
|
||||||
break
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
return 1 # Use manual scripts
|
||||||
|
}
|
||||||
|
|
||||||
if [[ -z "$SDL_MGR_PID" ]]; then
|
if use_systemd; then
|
||||||
echo "SDL Manager is not running"
|
systemctl --user status sdl-mgr
|
||||||
exit 0
|
else
|
||||||
fi
|
# Get sdl-mgr PID
|
||||||
|
SDL_MGR_PID=""
|
||||||
|
for pid in $(pgrep -f 'node' 2>/dev/null || true); do
|
||||||
|
cwd=$(readlink /proc/$pid/cwd 2>/dev/null || true)
|
||||||
|
if [[ "$cwd" == *"sdl-mgr"* ]]; then
|
||||||
|
SDL_MGR_PID="$pid"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
echo "SDL Manager is running with PID: ${SDL_MGR_PID}"
|
if [[ -z "$SDL_MGR_PID" ]]; then
|
||||||
exit 0
|
echo "SDL Manager is not running"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "SDL Manager is running with PID: ${SDL_MGR_PID}"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
@ -2,6 +2,17 @@
|
||||||
# stop-sdl-mgr.sh - Script to stop SDL Manager
|
# stop-sdl-mgr.sh - Script to stop SDL Manager
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
use_systemd() {
|
||||||
|
# Check if systemd user mode is available and service exists
|
||||||
|
if systemctl --user status >/dev/null 2>&1; then
|
||||||
|
# Check if our service file exists
|
||||||
|
if systemctl --user list-unit-files | grep -q "^sdl-mgr.service"; then
|
||||||
|
return 0 # Use systemd
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
return 1 # Use manual scripts
|
||||||
|
}
|
||||||
|
|
||||||
# Get sdl-mgr PID
|
# Get sdl-mgr PID
|
||||||
SDL_MGR_PID=""
|
SDL_MGR_PID=""
|
||||||
for pid in $(pgrep -f 'node' 2>/dev/null || true); do
|
for pid in $(pgrep -f 'node' 2>/dev/null || true); do
|
||||||
|
|
@ -19,27 +30,32 @@ fi
|
||||||
|
|
||||||
echo "Stopping SDL Manager (PID: ${SDL_MGR_PID})..."
|
echo "Stopping SDL Manager (PID: ${SDL_MGR_PID})..."
|
||||||
|
|
||||||
# Send SIGTERM for graceful shutdown
|
if use_systemd; then
|
||||||
kill "$SDL_MGR_PID"
|
systemctl --user stop sdl-mgr
|
||||||
|
else
|
||||||
|
# Manual PID-based stop logic
|
||||||
|
# Send SIGTERM for graceful shutdown
|
||||||
|
kill "$SDL_MGR_PID"
|
||||||
|
|
||||||
# Wait up to 10 seconds for process to exit
|
# Wait up to 10 seconds for process to exit
|
||||||
for i in {1..10}; do
|
for i in {1..10}; do
|
||||||
if ! kill -0 "$SDL_MGR_PID" 2>/dev/null; then
|
if ! kill -0 "$SDL_MGR_PID" 2>/dev/null; then
|
||||||
echo "SDL Manager stopped successfully"
|
echo "SDL Manager stopped successfully"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
|
|
||||||
# If still running after 10 seconds, force kill
|
# If still running after 10 seconds, force kill
|
||||||
if kill -0 "$SDL_MGR_PID" 2>/dev/null; then
|
|
||||||
echo "WARNING: Graceful shutdown failed, forcing kill..."
|
|
||||||
kill -9 "$SDL_MGR_PID"
|
|
||||||
sleep 1
|
|
||||||
|
|
||||||
if kill -0 "$SDL_MGR_PID" 2>/dev/null; then
|
if kill -0 "$SDL_MGR_PID" 2>/dev/null; then
|
||||||
echo "ERROR: Failed to stop SDL Manager"
|
echo "WARNING: Graceful shutdown failed, forcing kill..."
|
||||||
exit 1
|
kill -9 "$SDL_MGR_PID"
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
if kill -0 "$SDL_MGR_PID" 2>/dev/null; then
|
||||||
|
echo "ERROR: Failed to stop SDL Manager"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,17 @@
|
||||||
# start-sdl-wkr.sh - Script to start SDL Worker
|
# start-sdl-wkr.sh - Script to start SDL Worker
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
use_systemd() {
|
||||||
|
# Check if systemd user mode is available and service exists
|
||||||
|
if systemctl --user status >/dev/null 2>&1; then
|
||||||
|
# Check if our service file exists
|
||||||
|
if systemctl --user list-unit-files | grep -q "^sdl-mgr.service"; then
|
||||||
|
return 0 # Use systemd
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
return 1 # Use manual scripts
|
||||||
|
}
|
||||||
|
|
||||||
# Get $SDL_HOME directory from SCRIPT PATH
|
# Get $SDL_HOME directory from SCRIPT PATH
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
SDL_HOME="$(cd "$SCRIPT_DIR/.." && pwd)"
|
SDL_HOME="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||||
|
|
@ -47,5 +58,9 @@ echo " Node: ${NODE_BIN}"
|
||||||
export PATH="${NODE_BIN_DIR}:${PATH}"
|
export PATH="${NODE_BIN_DIR}:${PATH}"
|
||||||
cd "${SDL_WKR_APP_DIR}"
|
cd "${SDL_WKR_APP_DIR}"
|
||||||
|
|
||||||
# Start in foreground (use nohup or systemd for background)
|
if use_systemd; then
|
||||||
exec "${NPM_BIN}" start
|
systemctl --user start sdl-wkr
|
||||||
|
else
|
||||||
|
# Manual background start logic
|
||||||
|
"${NPM_BIN}" start &
|
||||||
|
fi
|
||||||
|
|
@ -2,20 +2,35 @@
|
||||||
# status-sdl-mgr.sh - Script to show status of SDL Manager
|
# status-sdl-mgr.sh - Script to show status of SDL Manager
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
# Get sdl-mgr PID
|
use_systemd() {
|
||||||
SDL_MGR_PID=""
|
# Check if systemd user mode is available and service exists
|
||||||
for pid in $(pgrep -f 'node' 2>/dev/null || true); do
|
if systemctl --user status >/dev/null 2>&1; then
|
||||||
cwd=$(readlink /proc/$pid/cwd 2>/dev/null || true)
|
# Check if our service file exists
|
||||||
if [[ "$cwd" == *"sdl-mgr"* ]]; then
|
if systemctl --user list-unit-files | grep -q "^sdl-mgr.service"; then
|
||||||
SDL_MGR_PID="$pid"
|
return 0 # Use systemd
|
||||||
break
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
return 1 # Use manual scripts
|
||||||
|
}
|
||||||
|
|
||||||
if [[ -z "$SDL_MGR_PID" ]]; then
|
if use_systemd; then
|
||||||
echo "SDL Manager is not running"
|
systemctl --user status sdl-wkr
|
||||||
exit 0
|
else
|
||||||
fi
|
# Get sdl-mgr PID
|
||||||
|
SDL_MGR_PID=""
|
||||||
|
for pid in $(pgrep -f 'node' 2>/dev/null || true); do
|
||||||
|
cwd=$(readlink /proc/$pid/cwd 2>/dev/null || true)
|
||||||
|
if [[ "$cwd" == *"sdl-mgr"* ]]; then
|
||||||
|
SDL_MGR_PID="$pid"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
echo "SDL Manager is running with PID: ${SDL_MGR_PID}"
|
if [[ -z "$SDL_MGR_PID" ]]; then
|
||||||
exit 0
|
echo "SDL Manager is not running"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "SDL Manager is running with PID: ${SDL_MGR_PID}"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
@ -2,6 +2,17 @@
|
||||||
# stop-sdl-wkr.sh - Script to stop SDL Worker
|
# stop-sdl-wkr.sh - Script to stop SDL Worker
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
use_systemd() {
|
||||||
|
# Check if systemd user mode is available and service exists
|
||||||
|
if systemctl --user status >/dev/null 2>&1; then
|
||||||
|
# Check if our service file exists
|
||||||
|
if systemctl --user list-unit-files | grep -q "^sdl-mgr.service"; then
|
||||||
|
return 0 # Use systemd
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
return 1 # Use manual scripts
|
||||||
|
}
|
||||||
|
|
||||||
# Get sdl-wkr PID
|
# Get sdl-wkr PID
|
||||||
SDL_WKR_PID=""
|
SDL_WKR_PID=""
|
||||||
for pid in $(pgrep -f 'node' 2>/dev/null || true); do
|
for pid in $(pgrep -f 'node' 2>/dev/null || true); do
|
||||||
|
|
@ -19,27 +30,32 @@ fi
|
||||||
|
|
||||||
echo "Stopping SDL Worker (PID: ${SDL_WKR_PID})..."
|
echo "Stopping SDL Worker (PID: ${SDL_WKR_PID})..."
|
||||||
|
|
||||||
# Send SIGTERM for graceful shutdown
|
if use_systemd; then
|
||||||
kill "$SDL_WKR_PID"
|
systemctl --user stop sdl-wkr
|
||||||
|
else
|
||||||
|
# Manual PID-based stop logic
|
||||||
|
# Send SIGTERM for graceful shutdown
|
||||||
|
kill "$SDL_WKR_PID"
|
||||||
|
|
||||||
# Wait up to 10 seconds for process to exit
|
# Wait up to 10 seconds for process to exit
|
||||||
for i in {1..10}; do
|
for i in {1..10}; do
|
||||||
if ! kill -0 "$SDL_WKR_PID" 2>/dev/null; then
|
if ! kill -0 "$SDL_WKR_PID" 2>/dev/null; then
|
||||||
echo "SDL Worker stopped successfully"
|
echo "SDL Worker stopped successfully"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
|
|
||||||
# If still running after 10 seconds, force kill
|
# If still running after 10 seconds, force kill
|
||||||
if kill -0 "$SDL_WKR_PID" 2>/dev/null; then
|
|
||||||
echo "WARNING: Graceful shutdown failed, forcing kill..."
|
|
||||||
kill -9 "$SDL_WKR_PID"
|
|
||||||
sleep 1
|
|
||||||
|
|
||||||
if kill -0 "$SDL_WKR_PID" 2>/dev/null; then
|
if kill -0 "$SDL_WKR_PID" 2>/dev/null; then
|
||||||
echo "ERROR: Failed to stop SDL Worker"
|
echo "WARNING: Graceful shutdown failed, forcing kill..."
|
||||||
exit 1
|
kill -9 "$SDL_WKR_PID"
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
if kill -0 "$SDL_WKR_PID" 2>/dev/null; then
|
||||||
|
echo "ERROR: Failed to stop SDL Worker"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue