Сначала ситуация:
У меня есть сервер, которого я хочу завершить работу автоматически ночью (00:00), но я должен удостовериться, что никто не зарегистрирован через ssh во все еще. Если они будут, то я позволю до другого часа для второй попытки завершения работы (01:00), в котором времени сервер понижается несмотря ни на что.
Я полагаю, что могу просто пойти с заданием крона для завершения работы (если нет лучший способ запланировать завершения работы), но не знал бы, как реализовать проверку в первом случае.
Дополнительный:
Есть ли способ знать, использует ли пользователь активно свою долю самбы, и в этом случае, не завершают процедуру завершения работы. Или еще лучше, проверьте, существует ли здоровая сумма Диска ввод-вывод, который также не завершит завершение работы.
Я уже видел некоторые ответы, которые могут выручить меня, таким образом, я хочу знать а именно, каков был бы лучший способ выполнить это в целом, не изрубив различные остатки.
Можно проверить на активные соединения с:
netstat -an | grep ESTABLISHED | grep ":[portname] " | wc -l
Поэтому добавьте это к сценарию удара и добавьте сценарий удара к cronjob.
Создание cronjob:
sudo su
crontab -e
Вставьте что-то вроде этого для проверки в 24:00 и принудительного завершения работы в 1:00:
# Check for shutdown system at 24:00 every day
00 0 * * * /usr/bin/shutdown_script
# Shutdown at 01:00 every day
00 1 * * * /usr/bin/shutdown -h now
Создайте сценарий (все еще как корень ;)):
gedit /usr/bin/shutdown_script
и добавьте в командах, на которые Вы хотите проверить:
#!/bin/bash
users_ssh=`netstat -an | grep ESTABLISHED | grep ':[445] ' | wc -l`
users_ssh_alertvalue="0"
if [ "$users_ssh" -eq "$users_ssh_alertvalue" ]; then
/sbin/shutdown -h now
fi
и, конечно, сделайте это исполняемым файлом.
Можно сделать это более усовершенствованным путем добавления большего количества опций к if
все, что необходимо сделать, является находкой корректная команда для нахождения значения, которое Вы хотите проверить. Я еще не нашел хорошую проверку ввода-вывода хотя (iostat
и iotop
выглядите многообещающими).
править: в то время как поиск проверки ввода-вывода управляет, чтобы я нашел mpstat
. Это сообщает о связанной с процессорами статистике (см. man mpstat
). Время простоя ЦП от mpstat
:
mpstat | grep all | sed -s 's/.* all// ; s/ * / /g' | cut -d ' ' -f10
Таким образом, Вы могли включить это и завершить работу, когда время простоя ЦП выше, чем 98%.