…o negócio é usar sleep e operador &&

Amantes do terminal: vocês já quiseram rapidamente agendar uma tarefa simples para ser rodada mais tarde? Pode ser um aviso quando o seu bolo acaba de assar, ligar os torrents enquanto você dá uma saidinha, tocar um despertador depois de algumas horas.

Muitos diriam para você usar um cronjob… mas eu não! Foda-se esse cron e seus cronjobs, eu sempre esqueço como essa merda funciona. A minha resposta para isto é muito mais simples: use a função sleep.


$ sleep 3600 && deluge

Este exemplo abre o meu software favorito de torrents depois de uma hora. Note que você tem que calcular o tempo de espera em segundos. Este exemplo a seguir fecha os torrents depois de 5 horas:


$ sleep $((3600*5)) && pkill deluge

O $((3600*5)) é o tempo de 5 horas em segundos. Sim, é assim que se faz matématica no bash … POKER FACE.

A magia toda da coisa vem de um dos conceitos mais simples do bash, o fato de que o operador && espera que o primeiro programa acabe com sucesso para executar o segundo. Outra coisa divertida de se fazer é chamar o zenity, para mostrar uns avisos para gente:


# aviso depois de 10 minutos
$ sleep $((60*10)) && zenity --text "Seu bolo está pronto!" --info

As possibilidades são infinitas. Podemos misturar programas como o aplay ou o mpg123 para tocar sons e músicas. Se você não quer ter que abrir vários terminais e quiser aproveitar o terminal que você está usando você pode usar o operador & (apenas um & galera) para abrir processos em background.


# toque uma música depois de 30 min e alegre o ambiente com o efeito surpresa
$ sleep $((60*30)) && mpg123 CarelessWhisper.mp3 & # roda em background

Os mais criativos podem usar loops e variáveis para criar um poderoso sistema de agendamento de tarefas… de novo :)

usar cronjobs é para os fracos …

…desde que seja para tarefas triviais, caso você queira agendar coisas importantes e tal, dêem uma lida sobre ele ou outras soluções parecidas. É isso, bom dia a todos!