Хорошо, Так немного фона;
Я использовал Windows Home Server в качестве Резервного Устройства, Медиасервера и Сервера Доли дома в течение некоторого времени. Я решил, что это стоило мне, выделяют сока так очень, вначале добавил "Световые сигналы" дополнение, чтобы гарантировать, что это только работало как и, когда необходимый.
Я теперь надеюсь переключаться на основанный на Linux сервер, и я ищу подобный инструмент/набор инструментов для усовершенствованного управления питанием.
Теперь вопрос;
Кто-либо получил какие-либо единые предложения (т.е. с клиентскими частями и для Windows и для Linux и части сервера для сервера Linux), или кто-либо может просто проверить, что я должен буду установить все отдельные биты для этого сам отдельно?
(Инструмент, подобный "SmartPower", но для Linux, был бы большим запуском),
К сожалению, Вы не указывали свои конкретные требования, таким образом, трудно знать, в чем точно Вы нуждаетесь.
Однако со сценариями оболочки почти что-либо возможно. У меня есть сценарий оболочки, который завершает работу компьютера, когда-то определенные клиенты (пространство отделилось, список в КЛИЕНТСКОЙ переменной) больше не и определенные процессы онлайн (пространство отделилось, список в переменной ПРОЦЕССОВ) не работают за последними 3 проверками:
#!/bin/sh
LOGFILE=/var/log/autoshutdown.log
CLIENTS="hanzo twix"
PROCESSES="screen"
CHECK_THRESHOLD=3
CHECK_COUNT_FILE=/tmp/autoshutdown_count
FALSE=1
TRUE=0
function log() {
typeset message="$1"
echo "$(date +'%Y-%m-%d %H:%M:%S') $message" >> $LOGFILE
}
function clientsOnline() {
typeset flag_online=$FALSE
for client in $CLIENTS
do
if ping -c 1 $client 1>/dev/null 2>/dev/null
then
#log "Client $client is online."
flag_online=$TRUE
else
#log "Client $client is offline."
true
fi
done
return $flag_online
}
function processRunning() {
typeset process_flag=$FALSE
for process in $PROCESSES
do
if ps -e | grep -qs $process
then
#log "Process $process is running."
process_flag=$TRUE
else
#log "Process $process is not running."
true
fi
done
return $process_flag
}
function resetShutdownCounter() {
echo "0" > $CHECK_COUNT_FILE
}
function getShutdownCount() {
if [ -r $CHECK_COUNT_FILE ]
then
cat $CHECK_COUNT_FILE | head -n 1
else
echo 0
fi
}
function incrementShutdownCounter() {
echo $(expr $(getShutdownCount) + 1) > $CHECK_COUNT_FILE
}
if [ $(id -u) -ne 0 ]
then
echo "This script must be run as root user." >&2
exit 1
fi
#log "### Starting ###"
if clientsOnline
then
#log "At least one client is online. Reseting shutdown count."
resetShutdownCounter
elif processRunning
then
#log "At least one of the registered processes is running. Reseting shutdown count."
resetShutdownCounter
else
incrementShutdownCounter
log "No registered client online. Shutdown counter incremented. Current value: $(getShutdownCount)"
if [ $(getShutdownCount) -ge $CHECK_THRESHOLD ]
then
log "Shutdown count threshold reached. Shutting down system in 10 seconds."
rm -f $CHECK_COUNT_FILE
/sbin/shutdown -h 1
fi
fi
Все, что необходимо сделать, должно запустить этот скрипт от crontab каждые 5 минут. Затем это завершило бы работу Вашего компьютера в случае, если условия завершения работы выполняются в течение 15 минут подряд.
На самом деле это довольно просто.
Для выключения машины Linux, только необходимо выполнить '/sbin/telinit 6' (как корень!) из командной строки или сценария. Это закрывает все процессы организованным способом и выключается через BIOS. Обратите внимание, что это не работает все материнские платы, но в 99% случаев это делает.
Существует много способов автоматизировать это... Я не знаю ни о каких автоматизированных пакетах, но не трудно создать то это самостоятельно. Я предполагаю, что Вы используете сервер и рабочий стол/ноутбук, чтобы продолжить работать. Если, например, Вы хотите, чтобы Ваша система Linux выключилась автоматически после того, как Вы закрываете свой рабочий стол Windows, Вы могли записать сценарий, который проверяет с помощью ping-запросов Вашу машину Windows каждые 5 минут. Если это перестало работать 3 раза подряд, закройте машину. Другая возможность является веб-страницей, только доступной от Вас локальная LAN, которая инициирует (отложенное) завершение работы; Вы просто удостоверяетесь, что к странице обращаются завершение работы Windows. И так далее...
Что касается закрытия в определенное время, можно сделать это довольно легко путем помещения записи в/etc/crontab
30 2 * * * базируются/sbin/shutdown-h 0
Это будет завершать работу системы в 2:30 каждый день.
Некоторые BIOS позволяют Вам установить систему для включений в определенное время, это - другая опция помимо следа - на LAN.
Другой механизм (для добавления к ответам других) является gnome-power-cmd.sh при использовании Gnome:
gnome-power-cmd.sh {приостанавливают |, завершение работы | в спящем режиме | перезагрузка}
Это, кажется, использует DBUS. Я не знаю, как полезный, который будет, если Вы запланируете на выполнении сервера w/out Gnome все же.