Como configuro um trabalho cron no OS X para executar um comando curl em um horário específico todos os dias?


20

Eu tenho um comando CURL que quero executar todos os dias às 3 da manhã, mas não tenho certeza de como configurá-lo e os guias são todos estranhos.

Suponha que eu tenha muita experiência em terminal / bash, mas nunca configurei um cron antes.

É possível que o trabalho cron ative meu computador, mesmo se estiver em suspensão e a tampa estiver fechada (macbook pro), apenas para executar este comando curl e voltar a dormir?

Como faço para configurá-lo de qualquer maneira?

Respostas:


22

Comece executando o comando:

crontab -e

Isso abrirá o crontab para seu usuário em um editor de texto. Cron usa uma notação específica para trabalhos agendados. O formato abaixo mostra os campos para uma entrada de crontab do usuário (que precisa ser separada por tabulações).

min  hour  day_of_month  month  day_of_week  command

Para agendar um comando curl para ser executado às 3h diariamente, você pode inserir a linha:

0  3  *  *  *  curl args...

Observe como os minutos e as horas correspondem às 3h (nota lateral: o cron usa o formato de 24 horas, sem am ou pm). Os asteriscos que se seguem significam todos os dias do mês, todos os meses, todos os dias da semana.

O Cron não conseguirá acordar o computador do sono, mas você pode achar este post útil crontab para ativar o osx do sono


11
Quando eu faço crontab -eeu vejo isso no meu terminal: $ crontab -e crontab: no changes made to crontabe, em seguida, ele abre o meu editor de texto com o arquivo crontab.some-random-stringda pasta /tmp. Depois de editar e salvar, nada acontece no meu terminal. Se sim crontab -l, o trabalho que acabei de inserir não aparece. Então, se eu fizer crontab -enovamente, ele abre outro espaço em branco crontab.some-random-string. Também testei o primeiro crontab que salvei, definindo o tempo para 2 minutos a partir de quando eu o salvei e o cron nunca foi executado. O que poderia estar acontecendo?
Marcamillion

Qual editor de texto é aberto quando você executa 'crontab -e'?
Diametralpitch

Meu padrão atom,. É isso que inicia quando abro qualquer coisa para ser editada no meu terminal. Isto é o que eu tenho na minha ~/.bash_profile, export EDITOR='open -a "/Applications/Atom.app"'.
Marcamillion 21/11

Hmm, se você executa o atom sozinho a partir da linha de comando, ele espera que o atom saia antes de solicitar outro comando (caso contrário, convém tentar um editor de texto diferente).
Adam Luchjenbroers 23/11

@AdamLuchjenbroers Não sei se entendi completamente sua pergunta. Eu uso atom para toda a minha edição de código. Então, se eu quiser editar qualquer arquivo, basta fazê-lo atom .dentro do diretório ou atom <filepath>.
Marcamillion 23/11/16

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.