exchange: ensure helpers script (pre-Caddy)
This commit is contained in:
parent
c04439950f
commit
cd3ffadcde
1 changed files with 75 additions and 0 deletions
75
scripts/taler-exchange/ensure_exchange_helpers.sh
Executable file
75
scripts/taler-exchange/ensure_exchange_helpers.sh
Executable file
|
|
@ -0,0 +1,75 @@
|
|||
#!/bin/bash
|
||||
# Ensure exchange wire/db helper processes are running (no systemd).
|
||||
# Root inside taler-exchange container (or host if packages installed there).
|
||||
#
|
||||
# Usage:
|
||||
# ensure_exchange_helpers.sh
|
||||
# ENSURE_ONLY=1 ensure_exchange_helpers.sh # start missing, no health summary
|
||||
set -euo pipefail
|
||||
|
||||
CONF="${TALER_EXCHANGE_CONFIG:-/etc/taler-exchange/taler-exchange.conf}"
|
||||
LOG_DIR="${TALER_EXCHANGE_LOG_DIR:-/var/log/taler-exchange}"
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo "root only" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
chmod 755 "$LOG_DIR" 2>/dev/null || true
|
||||
|
||||
# Live process under user. Note: Linux COMM is 15 chars — never use pgrep -x
|
||||
# for long names like taler-exchange-aggregator / taler-exchange-wirewatch.
|
||||
is_running() {
|
||||
local user="$1"
|
||||
local bin="$2"
|
||||
local base
|
||||
base=$(basename "$bin")
|
||||
# [t] trick avoids matching this grep/pgrep itself
|
||||
ps -u "$user" -o args= 2>/dev/null | grep -qE "(^|/)[${base:0:1}]${base:1}( |$)" \
|
||||
|| pgrep -u "$user" -f "(^|/)(${base})( |$)" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
# Start with nohup so SIGHUP from parent shell exit does not kill helpers.
|
||||
start_one() {
|
||||
local user="$1"
|
||||
local name="$2"
|
||||
local bin="$3"
|
||||
shift 3
|
||||
if is_running "$user" "$bin"; then
|
||||
echo "already: $name ($user)"
|
||||
return 0
|
||||
fi
|
||||
echo "start: $name as $user"
|
||||
# shellcheck disable=SC2086
|
||||
nohup runuser -u "$user" -- "$bin" "$@" >>"$LOG_DIR/${name}.log" 2>&1 </dev/null &
|
||||
disown 2>/dev/null || true
|
||||
local i
|
||||
for i in 1 2 3 4 5 6; do
|
||||
sleep 0.4
|
||||
if is_running "$user" "$bin"; then
|
||||
echo " ok: $name"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
echo " FAIL: $name did not stay up (see $LOG_DIR/${name}.log)" >&2
|
||||
tail -15 "$LOG_DIR/${name}.log" 2>/dev/null || true
|
||||
return 1
|
||||
}
|
||||
|
||||
ec=0
|
||||
start_one taler-exchange-aggregator taler-exchange-aggregator \
|
||||
/usr/bin/taler-exchange-aggregator -c "$CONF" -L INFO || ec=1
|
||||
start_one taler-exchange-closer taler-exchange-closer \
|
||||
/usr/bin/taler-exchange-closer -c "$CONF" -L INFO || ec=1
|
||||
start_one taler-exchange-wire taler-exchange-wirewatch \
|
||||
/usr/bin/taler-exchange-wirewatch -c "$CONF" -L INFO || ec=1
|
||||
start_one taler-exchange-wire taler-exchange-transfer \
|
||||
/usr/bin/taler-exchange-transfer -c "$CONF" -L INFO || ec=1
|
||||
|
||||
echo "--- live helpers ---"
|
||||
ps -eo pid,user,stat,etime,args 2>/dev/null \
|
||||
| grep -E 'taler-exchange-(aggregator|closer|wirewatch|transfer)' \
|
||||
| grep -vE 'grep| Z |ensure_exchange' || true
|
||||
|
||||
exit "$ec"
|
||||
Loading…
Add table
Add a link
Reference in a new issue