Настройка: состояние служб ядра и модулей с перезапуском из админки
Модули работают отдельными службами (bj-npr, bj-quikexport, bj-lk), и когда служба лежит, раздел модуля отвечает ошибкой связи, а администратору предлагалось идти в консоль за systemctl status. Теперь в разделе «Обновления» карточка «Службы»: состояние каждой службы, с какого времени, причина отказа и кнопка «Перезапустить». Состояние читаем обычным systemctl show — прав не требует. Перезапуск делает root-демон bj-keymedia (тот же канал, что у установки обновлений) по закрытому списку служб: чужую службу и сам демон отсюда не тронуть. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q4YVo4UMopqT5DzicqpPjL
This commit is contained in:
@@ -11,6 +11,20 @@ process_one(){
|
||||
case "$action" in
|
||||
quikexport-*) out=$(BJ_EXTRA="$extra" /usr/local/sbin/bj-quikexport-admin "${action#quikexport-}" "$staging" 2>&1) ;;
|
||||
component-install) out=$(/usr/local/sbin/bj-component-install "$staging" 2>&1) ;;
|
||||
# Перезапуск службы модуля из админки. Список закрытый: чужую службу
|
||||
# (и сам этот демон) отсюда тронуть нельзя.
|
||||
unit-restart)
|
||||
case "$extra" in
|
||||
bj-server|bj-npr|bj-quikexport|bj-lk|bj-crypto)
|
||||
systemctl reset-failed "$extra" >/dev/null 2>&1
|
||||
if err=$(systemctl restart "$extra" 2>&1); then
|
||||
out="{\"ok\":true,\"output\":\"перезапущено: $extra\"}"
|
||||
else
|
||||
err=$(printf '%s' "$err" | tr -d '"\\' | tr '\n' ' ')
|
||||
out="{\"ok\":false,\"error\":\"$extra: $err\"}"
|
||||
fi ;;
|
||||
*) out="{\"ok\":false,\"error\":\"недопустимая служба\"}" ;;
|
||||
esac ;;
|
||||
*) out=$(BJ_TARGET_DEV="$tdev" BJ_TARGET_MNT="$tmnt" BJ_EXTRA="$extra" /usr/local/sbin/bj-keymedia-install "$action" "$staging" "$profile" 2>&1) ;;
|
||||
esac
|
||||
printf '%s' "$out" > "$res.tmp"; chown bj:bj "$res.tmp" 2>/dev/null
|
||||
|
||||
Reference in New Issue
Block a user