Agendamento de tarefas no UNIX sem cron

Se você tiver a infelicidade de estar em um sistema em que não tem permissão para usá- cronlo, poderá fazer algo semelhante com o at. Este é um script que se reprograma para ser executado no dia seguinte às 8h45:

#!/bin/bash
the_main_thing
&>/dev/null
[[ $0 = /* ]] && script=$0 || script=$PWD/$0
at -f "$script" 0845 &>/dev/null

the_main_thing é o comando ou script que você deseja executar periodicamente.

O objetivo [[ $0 = /* ]] && script=$0 || script=$PWD/$0é obter o caminho absoluto do próprio script atual.

Em at -f "$script" 0845 &>/dev/null, -fé para especificar o script a ser executado: o próprio script atual com caminho absoluto, caso contrário, pode não funcionar.

Para executar algo a cada 5 horas, você pode usar tempos relativos, por exemplo:

at -f "$script" 'now + 5 hours' &>/dev/null

Semelhante a cron, a saída de attrabalhos agendados é enviada por email para a conta UNIX. Para evitar poluir a caixa de correio, provavelmente é uma boa ideia redirecionar ambos com &> /dev/null, e você pode querer fazer o mesmo the_main_thingtambém.

Para ver suas tarefas agendadas, use atq. Para remover tarefas agendadas, use atrm.