На этот вопрос уже есть ответ здесь:
Мой проект требует, чтобы источник питания для ноутбук должен быть включен и выключен.
Есть ли способ правильно завершить работу Ubuntu при пропадании внешнего питания? Он запустит выключение на своей внутренней батарее.
Попытайтесь проверить on_ac_power
команда. От man on_ac_power
:
NAME
on_ac_power - test whether computer is running on AC power
SYNOPSIS
on_ac_power
DESCRIPTION
on_ac_power checks whether the system is running on AC power (i.e., mains power) as opposed to battery
power.
OPTIONS
None.
EXIT STATUS
0 (true) System is on mains power
1 (false) System is not on mains power
255 (false) Power status could not be determined
if on_ac_power; then
echo "You are on AC-Power" # System is on mains power
else
echo "Power Lost" # System is not on mains power
fi
Необходимо проверить состояние питания переменным током в каждые X интервалов времени. Это - самый легкий способ, которым Вы выполняете его в фоновом режиме, внутри некоторое время цикл:
while true
do
if on_ac_power; then
echo "You are on AC-Power" # System is on main power
else
echo "Power Lost" # System is not on main power
fi
sleep [Seconds]
done
Сохраните свой сценарий (ChechMainPWR.sh
) и если Вы хотите запустить скрипт на запуске, поэтому включите строку /etc/rc.local
назвать Ваш сценарий (ChechMainPWR.sh
) + "и" заставить его выйти. Как это
sh /home/USERNAME/ChechMainPWR.sh $
Перезагрузка и видит изменения.
Если Вы хотите видеть предупреждение, когда оно потеряно или не соединено на Вашем настольном уведомлении, можно использовать notify-send
программа.
notify-send "Main Power Lot!" "System is now shutting down"
Посмотрите man notify-send
для большего количества информации.
NAME
notify-send - a program to send desktop notifications
SYNOPSIS
notify-send [OPTIONS] <summary> [body]
DESCRIPTION
With notify-send you can sends desktop notifications to the user via a notification daemon from the command
line. These notifications can be used to inform the user about an event or display some form of information
without getting in the user's way.
Затем заключительный сценарий был бы похож на это:
while true
do
if ! on_ac_power; then # System is not on main power
notify-send "Main Power Lot!" "System is going down after 10 seconds"
sleep 10
echo YOUR_PASSWORD | sudo -kS shutdown -h now
#####^^^^^^^^^^^^^ VERY VERY VERY insecure! ##########
fi
sleep 300 # check main power status every 5 minutes
done
Предупреждение: echo YOUR_PASSWORD | sudo -kS shutdown -h now
работы, НО это чрезвычайно небезопасно, поскольку Ваш пароль записан в Вашей истории и может также быть видим другим пользователям через список процессов.
Затем альтернативное решение; можно настроить систему это sudo someCommand
не требует пароля (в моем случае для sudo shutdown
). Чтобы сделать это, работать sudo visudo
и добавьте следующую строку в КОНЦЕ в файле, который открывается:
Your_USERNAME ALL=NOPASSWD: /sbin/shutdown
Затем выйдите из редактора и сохраните его (CTRL+x).
Теперь можно использовать shutdown
команда из командной строки или в Вашем сценарии без пароля.
Таким образом, сценарий был бы похож на это:
while true
do
if ! on_ac_power; then #your system is not on AC-Power
notify-send "Main Power Lost!" "System is going down after 10 seconds"
sleep 10
sudo shutdown -h now # System is not on mains power
fi
sleep 300 # check main power status every 5 minutes
done
Внешние ссылки:
Как я выполняю определенные команды sudo без пароля?
Как я перезапускаю завершение работы / от терминала?
В Предпочтениях Управления питанием можно установить, что произойти, когда заряд батареи критически низок .
Набор это там к закрылось :
Переходят к параметрам настройки системы путем нажатия на значок настроек на главный правый угол рабочего стола и выбора "параметров настройки системы..."
В панели Cick параметров настройки системы на "питании" и там Вы видите опцию для, "когда питание является критически низким он черный по умолчанию. выберите его и выберите 'power off' в выпадающем меню.