Qual é uma maneira simples de agendar um único evento para acontecer em algum momento no futuro?


15

Muitas vezes, quero que meu computador execute uma única tarefa, mas não agora. Por exemplo, eu poderia avisar em 30 minutos que é hora de deixar o trabalho. Ou talvez eu queira que ele execute um teste complicado daqui a duas horas, quando tenho certeza de que a maioria das pessoas sairá do escritório.

Eu sei que eu poderia criar um trabalho cron para executar em uma hora específica do dia, mas isso parece dar muito trabalho quando tudo que eu quero é algo simples como "Executar este script em 10 minutos", além de ter que descobrir a que horas será realmente X minutos / horas / dias a partir de agora e, em seguida, exclua o trabalho cron assim que terminar.

Claro que eu poderia escrever esse script e executá-lo em segundo plano:

sleep X
do_task

Mas isso parece tão desajeitado: eu preciso de um novo script para cada tarefa ou preciso escrever e manter um script genérico o suficiente para fazer o que quero, sem mencionar que preciso descobrir quantos segundos são os minutos, horas ou dias que eu quero.

Não existe uma solução já estabelecida para esse problema?


7
Eu estou supondo que você não tenha executado em toda a ainda?
Jw013

isso pode parecer muito básico ... mas seu sistema não tem nenhum tipo de calendário / lista de tarefas, com avisos?
JoséNunoFerreira

Respostas:


27

Eu uso um script simples com at:

#!/bin/bash
# email reminder notes using at(1)...

read -p "Time of message? [HH:MM] " time
read -p "Date of message? [dd.mm.yy] " date
read -p "Message body? " message

at "$time" "$date" <<EOF
echo "$message" | mailx -s "REMINDER" me@gmail.com
EOF

Você poderia facilmente canalizar $messagepara notify-sendou dzense quiser uma notificação na área de trabalho em vez de um email.


9
Também pode usar tempo relativo ( + 2 days) e diferentes formatos ( YYYY-MM-DD). Consulte a página de manual para mais detalhes.
Arcege

Sim: us Antipodeans preferem DD-MM-AA :)
jasonwryan

Eu normalmente costumo usar scripts rápidos. Minha maneira preguiçosa favorita de agendar um trabalho é "agora +5 minutos", que também podem durar horas ou dias.
George M

+1 por script e por mencionar dzen e notify-send, dos quais eu não tinha ouvido falar.
315 Joe

O redirecionamento dzen não está funcionando para mim. unix.stackexchange.com/q/38362/4143 #
Cory Klein #

6

A maneira genérica de usar até

Escreva um script que faça o que você deseja fazer. Use o caminho completo para todos os comandos externos, registre a saída em um arquivo de log adequado ou envie-o por correio.

Teste o script.

Ative-o com at -f YOURSCRIPT -t MMDDhhmm

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.