|
| 1 | +#!/bin/bash |
| 2 | +# |
| 3 | +# pgpro-diag.sh — диагностика шаблонных экземпляров Postgres Pro 1C. |
| 4 | +# Собирает в один файл всё, что нужно, чтобы подстроить pg-server-manager.sh |
| 5 | +# под штатную шаблонную схему postgrespro-<ver>@<порт>. |
| 6 | +# |
| 7 | +# Запуск: ./pgpro-diag.sh # релиз по умолчанию 1c-18 |
| 8 | +# ./pgpro-diag.sh 1c-17 # другой релиз |
| 9 | +# Результат: /root/pgpro-diag-<ver>.txt |
| 10 | +# |
| 11 | +VER="${1:-1c-18}" |
| 12 | +OUT="/root/pgpro-diag-${VER}.txt" |
| 13 | + |
| 14 | +# первый существующий @-экземпляр как образец |
| 15 | +SAMPLE=$(systemctl list-units --all --type=service "postgrespro-${VER}@*" --no-legend --no-pager 2>/dev/null \ |
| 16 | + | awk '{print $1}' | sed 's/\.service$//' | head -n1) |
| 17 | + |
| 18 | +{ |
| 19 | + echo "############ Postgres Pro diag: ver=${VER} sample=${SAMPLE:-<нет>} $(date) ############" |
| 20 | + |
| 21 | + echo; echo "=== 1. шаблонный юнит ===" |
| 22 | + systemctl cat "postgrespro-${VER}@.service" 2>&1 |
| 23 | + |
| 24 | + if [[ -n "$SAMPLE" ]]; then |
| 25 | + echo; echo "=== 2. полный конфиг экземпляра ${SAMPLE} (шаблон + drop-in) ===" |
| 26 | + systemctl cat "${SAMPLE}.service" 2>&1 |
| 27 | + echo; echo "=== 3. drop-in каталог ${SAMPLE} ===" |
| 28 | + ls -la "/etc/systemd/system/${SAMPLE}.service.d/" 2>&1 |
| 29 | + echo; echo "=== 3b. содержимое drop-in файлов ===" |
| 30 | + for f in "/etc/systemd/system/${SAMPLE}.service.d/"*.conf; do |
| 31 | + [[ -e "$f" ]] || continue |
| 32 | + echo "--- $f ---"; cat "$f" 2>&1 |
| 33 | + done |
| 34 | + echo; echo "=== 4. resolved Environment/ExecStart/EnvironmentFiles ${SAMPLE} ===" |
| 35 | + systemctl show "${SAMPLE}" -p Environment -p EnvironmentFiles -p ExecStart -p ExecStartPre -p FragmentPath -p DropInPaths --no-pager 2>&1 |
| 36 | + echo; echo "=== 4b. реальный -D из работающего процесса ===" |
| 37 | + pid=$(systemctl show "${SAMPLE}" -p MainPID --value 2>/dev/null) |
| 38 | + if [[ "$pid" =~ ^[0-9]+$ && "$pid" -gt 0 ]]; then |
| 39 | + tr '\0' ' ' < "/proc/$pid/cmdline" 2>/dev/null; echo |
| 40 | + else echo "процесс не запущен (MainPID=$pid)"; fi |
| 41 | + fi |
| 42 | + |
| 43 | + echo; echo "=== 5. per-instance файлы в /etc/default ===" |
| 44 | + ls -la /etc/default/ 2>/dev/null | grep -i postgrespro |
| 45 | + echo; echo "=== 5b. общий EnvironmentFile /etc/default/postgrespro-${VER} ===" |
| 46 | + cat "/etc/default/postgrespro-${VER}" 2>&1 |
| 47 | + |
| 48 | + echo; echo "=== 6. все @-экземпляры (active/enabled) ===" |
| 49 | + systemctl list-units --all --type=service "postgrespro-${VER}@*" --no-legend --no-pager 2>&1 | awk '{print $1, $3, $4}' |
| 50 | + echo "--- enabled-симлинки ---" |
| 51 | + ls -la /etc/systemd/system/*.wants/postgrespro-"${VER}"@*.service 2>&1 |
| 52 | + |
| 53 | + echo; echo "=== 7. каталоги данных /var/lib/pgpro/${VER} ===" |
| 54 | + ls -la "/var/lib/pgpro/${VER}/" 2>&1 |
| 55 | + |
| 56 | + echo; echo "=== 8. содержимое scripts/ ===" |
| 57 | + ls -la "/var/lib/pgpro/${VER}/scripts/" 2>&1 |
| 58 | + |
| 59 | + echo; echo "############ конец ############" |
| 60 | +} > "$OUT" 2>&1 |
| 61 | + |
| 62 | +echo "Готово. Пришли файл: $OUT" |
0 commit comments