LINUX.ORG.RU

Решение проблемы с авто отключение сервера при потери электо сети

 , , , ,


0

2

Добрый день,есть ноут(dell vostro 1500), как сделать выключение пк через 5 мин, если нет энерго сети и отменить действие если электро сеть появилась.

Использую Linux dell vostro 1500 4.9.0-8-amd64 SMP Debian 4.9.130-2 (2018-10-27) x86_64

сейчас используюсь задание с (cron+acpi)

crontabe -e add */1 * * * * /etc/cron.d/poweroffacpi.sh

config poweroffacpi.sh ############### !/bin/bash APP=$(acpi -a | grep -v grep | grep on) if [ -z «$APP» ]; then sudo /sbin/shutdown -h now fi ###############

Но проблема в том, что оно тупо смотрит изменение раз в минуту и не возможно отменить его + идет разбежка от 1 до 60 сек до отключения и также systemd не дает отключить сразу, и добавляет еще 5 мин.

Может у кого есть варианты?

Я пробовал, но ничего не помогло( laptop-mode-tools /etc/acpi/power.sh

Как минимум надо добавить метки времени при переходе в состояние «нет сети» (в /tmp/файл какойнить или в export BLABLA). При следующем опросе, если этот файл/переменная есть и состояние не изменилось, считать разницу и если она больше 5 минут, вырубать. А если состояние изменилось, то удалять файл/переменную. Как-то так, наверно...

iTA05 ()

Примерный план (или как щас модно импортозамещать тупым побуквенным переводом - «дорожная карта»).
Отключение от электросети - запуск таймера, который вызывает shutdown.
Подключение к электросети - прибиваем таймер.
Подключение/отключение можно ловить через udev или acpid. Таймеры - systemd или просто sleep с сохрением pid в файл и прибиванием таймера kill pid.

anonymous ()

Раз в минуту поверяешь наличие сети, если нет то увеличиваешь значение переменной в каком-нибудь файлике на 1, потом проверяешь сколько там получилось - если 5, то выключаешь. Если при проверке питание есть, то сбрасываешь значение в файлике на 0.

NobleWolf ()
Ответ на: комментарий от anonymous

Получилось что-то типо этого

#!/bin/bash
if ! on_ac_power; #Приверка и запуск цикла если нет питания.
then
    echo "Power off at 5 min"
sudo shutdown -h +1
while true
 do
    if ! on_ac_power; then
        echo "Power Lost" # Бесконечный цикл на проверку питания
    else
        echo "You are on AC-Power" # При включении сети отменяем и выходим
     sudo shutdown -c
    exit
    fi
     sleep 5
 done
fi

Jokrov ()