Выполнение сценариев по условиям "если текущее время больше, чем" и "запущен ли процесс Linux". Приводимые ниже сценарии (скрипты bash) создавались для своих нужд с целью автоматизации процессов.
Условия задачи
1. После создания резервных копий данных выключить компьютер.
2. Если создание резервных копий данных выполнено до 19 часов, то выключить компьютер, если нет – не выключать. Во втором случае компьютер будет выключен по расписанию.
3. Выключить компьютер по расписанию, если резервные копии данных уже созданы. В противном случае – пропустить задание выключения и компьютер выключит сценарий создания резервной копии данных.
Создание резервных копий и выключение компьютера
Резервные копии создаются через очередь
заданий rclone, оформленная скриптом sh, который также выполняется
по расписанию
01 18 * * * /home/minter/Tools/scripts/backup.sh
Пример:
#!/bin/bash
rclone sync ...
rclone sync ...
...
exit
Как выключить компьютер после завершения очереди заданий
читайте здесь.
Выключить компьютер по расписанию
В crontab (
пользовательское задание cron) имеется задание выключения компьютера ежедневно в 19 часов 5 минут:
05 19 * * * sudo /sbin/poweroff
Решение задачи
1. Изменение сценария создания резервных копий данных и выключения компьютера. При этом сценарий (скрипт bash) должен учитывать, что:
а) резервные копий данных созданы до 19 часов, поэтому выключение компьютера будет произведено по пользовательскому заданию cron выключения компьютера в 19:05;
б) резервные копий данных созданы после 19 часов. Так как при выполнении задания "выключить компьютер по расписанию" было установлено, что создание резервных копий данных не завершено, то команда на выключение компьютера подана не была. Поэтому после создания резервных копий данных компьютер необходимо выключить.
Устанавливается "пороговое значение" в 18 часов и производится запрос текущего времени в часах.Если текущее время в часах меньше или равно 18, то никаких действий не предпринимается. Если текущее время в часах больше 18, то выполняется выключение компьютера.
В сценарии создания резервных копий данных и выключения компьютера строка sudo /sbin/poweroff удаляется, а вместо неё вписывается:
b=18
time=`date '+%H'`
if [ $time -le $b ]
then
:
else
sudo /sbin/poweroff
fi
exit
символ : соответствует команде "ничего не делать".
2. Изменение задания выключения
компьютера по расписанию. При этом задание должно учитывать, что к моменту его выполнение создание резервных копий данных ещё продолжается.
Задание cron
05 19 * * * sudo /sbin/poweroff
меняется на задание выполнения сценария
05 19 * * * /home/minter/Tools/scripts/shutdown.sh
Сценарий проверяет наличие выполняемого процесса backup.sh Если такой процесс выполняется, то есть имеется его pid, то не предпринимается никаких действий. Если такого процесса не найдено, то будет выполнена команда выключения компьютера sudo /sbin/poweroff
#!/bin/bash
if pgrep 'backup.sh'; then
:
else
sudo /sbin/poweroff
fi
exit