
Tengo la costumbre de configurar rápidamente algunos recordatorios con:
sleep $duration; notify-send $reminder_message
Pero últimamente he tenido que moverme y cambiar a menudo de escritorio. Noté que $reminder_message
comencé a llegar más tarde de lo previsto. Resulta que el culpable es: que cuando cierro la tapa se suspende todo junto con mi sleep
comando.
Así es como lo descubrí:
date; echo $duration; date -d "+$duration sec"; sleep "$duration"s; date
Si cierro la tapa entre el comando anterior, entonces: date
y date -d "+$duration sec"
no coinciden. Sin embargo, si la tapa no está cerrada, ¡coinciden!
Entonces, para una solución rápida, deshabilité la suspensión con cierre de tapa con:
HandleLidSwitch=ignore
(siguienteesta respuesta de pregunta-ubuntu)
Ahora mis comandos de sueño funcionan como quería. Pero deshabilitar la suspensión por completo creo que es unademasiado agresivoarreglar y unexagerar!
¿Existe una solución más sencilla? Sólo quiero que mis sleep
órdenes no sean interrumpidas cuando cierro la tapa.
Respuesta1
No te ofendas, pero es posible que tengamos un problema XY aquí. Su impresión de que la solución a surealEl problema sleep
puede estar equivocado. sleep
comprueba hasta que ha pasado el tiempo especificado, y ese tiempo se detiene cuando la computadora duerme.
En su lugar, considere usar el at
comando para programar trabajos específicos para que se realicen en un momento específico.
at
funciona así:
echo "command_to_be_run" | at +30 minutes
programará un trabajo 30 minutos más tarde.
at
es muy parecido cron
, pero un trabajo se ejecuta sólo una vez. No se instala de forma predeterminada, pero se puede instalar con sudo apt install at
.