
У меня есть привычка быстро устанавливать напоминания с помощью:
sleep $duration; notify-send $reminder_message
Но в последнее время мне пришлось переезжать и часто менять столы. Я заметил, что мой $reminder_message
начал приходить позже, чем предполагалось. Виновником, как оказалось, является то, что когда я закрываю крышку, то он приостанавливает все вместе с моей sleep
командой.
Вот как я это узнал:
date; echo $duration; date -d "+$duration sec"; sleep "$duration"s; date
Если я закрываю крышку между указанной выше командой, то: date
и date -d "+$duration sec"
не совпадают. Однако, если крышка не закрыта, то они совпадают!
Поэтому для быстрого решения проблемы я отключил функцию приостановки с закрытием крышки с помощью:
HandleLidSwitch=ignore
(следующийэтот ответ ask-ubuntu)
Теперь мои команды сна работают так, как я хотел. Но отключение режима ожидания вообще, я считаю, этослишком агрессивныйисправить иперебор!
Есть ли более простое решение? Я просто хочу, чтобы мои sleep
команды не прерывались, когда я закрываю крышку.
решение1
Без обид, но у нас тут может быть проблема XY. Ваше впечатление, что решение вашейнастоящийпроблема в том, sleep
что может быть неправильно. sleep
проверяет, пока не пройдет указанное время, и это время останавливается, когда компьютер переходит в спящий режим.
Вместо этого рассмотрите возможность использования at
команды для планирования выполнения определенных заданий в определенное время.
at
работает так:
echo "command_to_be_run" | at +30 minutes
запланирую работу на 30 мин позже.
at
очень похож на cron
, но задание запускается только один раз. Он не устанавливается по умолчанию, но может быть установлен с помощью sudo apt install at
.