Этот скрипт позволяет указать время выключения компьютера в формате ЧЧ:MM. Вот как им пользоваться:
- Сохраните скрипт в файл, например
shutdown_timer.sh
- Сделайте его исполняемым командой:
chmod +x shutdown_timer.sh
- Запустите скрипт с указанием времени:
./shutdown_timer.sh 23:30
Как работает скрипт:
- Принимает время в формате ЧЧ:MM
- Проверяет, что формат времени корректный
- Вычисляет, сколько минут осталось до указанного времени
- Использует стандартную команду
shutdown
для планирования выключения - Если указанное время уже прошло сегодня, планирует выключение на завтра
Для отмены запланированного выключения используйте команду sudo shutdown -c
.
#!/bin/bash
# Функция для проверки, что время введено в правильном формате (HH:MM)
validate_time() {
if [[ ! $1 =~ ^([0-1][0-9]|2[0-3]):[0-5][0-9]$ ]]; then
echo "Ошибка: введите время в формате ЧЧ:МM (например, 23:30)"
exit 1
fi
}
# Проверяем, указано ли время в аргументах
if [ $# -eq 0 ]; then
echo "Пожалуйста, укажите время выключения в формате ЧЧ:MM"
echo "Пример: $0 23:30"
exit 1
fi
# Проверяем формат времени
validate_time "$1"
# Текущее время
current_time=$(date +%s)
# Преобразуем введенное время в секунды с начала дня
shutdown_hour=$(echo $1 | cut -d':' -f1)
shutdown_min=$(echo $1 | cut -d':' -f2)
# Вычисляем время выключения в секундах
target_time=$(date -j -f "%H:%M" "$shutdown_hour:$shutdown_min" +%s 2>/dev/null)
# Проверка на случай ошибки конвертации времени
if [ $? -ne 0 ]; then
echo "Ошибка при обработке введенного времени."
exit 1
fi
# Если целевое время уже прошло сегодня, переносим на завтра
if [ $target_time -le $current_time ]; then
target_time=$((target_time + 86400)) # Добавляем 24 часа (в секундах)
fi
# Вычисляем разницу в секундах
seconds_diff=$((target_time - current_time))
# Выводим информацию
echo "Компьютер будет выключен в $1"
echo "До выключения осталось: $(($seconds_diff / 60)) минут"
# Устанавливаем команду выключения
sudo shutdown -h +$(($seconds_diff / 60))
# Выводим сообщение о том, как отменить выключение
echo "Чтобы отменить запланированное выключение, выполните команду:"
echo "sudo killall shutdown или sudo shutdown -c"
Добавить комментарий