A opção moderna é usar uma unidade% timer systemd
. Isso requer a criação de uma unidade systemd
que define o job que você deseja executar periodicamente e uma unidade systemd.timer
que define o agendamento para o trabalho.
Supondo que você queira executar o trabalho como usuário comum, coloque esses arquivos em $HOME/.config/systemd/user
:
my-job.service
[Unit]
Description=Job that needs periodic execution
[Service]
ExecStart=/path/to/your/script
my-job.timer
[Unit]
Description=Timer that periodically triggers my-job.service
[Timer]
OnCalendar=minutely
Em seguida, ative as unidades recém-criadas e inicie o cronômetro:
$ systemctl --user enable my-job.service my-job.timer
$ systemctl --user start my-job.timer
Para verificar se o timer está definido:
$ systemctl --user list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
Wed 2016-11-02 14:07:00 EAT 19s left Wed 2016-11-02 14:06:37 EAT 3s ago my-job.timer my-job.service
journalctl -xe
deve mostrar as entradas de log do trabalho que está sendo executado.
Consulte man systemd.timer
para as muitas opções para configurar o comportamento do timer (incluindo inicialização aleatória, ativação do computador, persistência durante o tempo de inatividade, precisão do timer etc.) e man systemd.unit
para documentação excelente sobre systemd
e systemd
unidades em geral.