Como executo um trabalho cron em um Mac?

12

Como posso fazer meu Mac (executando o SO mais recente) executar uma tarefa automaticamente uma vez por dia? Por exemplo, eu gostaria que ele baixasse automaticamente uma cópia deste livro de geometria algébrica de código aberto uma vez por dia. Tenho a sensação de que alguma combinação de wget e cron deve funcionar, mas, depois de pesquisar e ler a documentação do cron, não consegui fazê-lo funcionar corretamente.

David Zureick-Brown
fonte
2
Sugiro que você não use o Crontab e aprenda a usar o Launchd como já sugerido.
Martin Marconcini

Respostas:

9

Eu acho que no OS X você deve usar launchctlpara "cron jobs".
Mas, caso contrário, sua tarefa deve ser fácil de executar com um cronjob
sudo crontab -e
55 23 * * * wget http://www.math.columbia.edu/algebraic_geometry/stacks-git/book.pdf

Isso deve ser executado todos os dias às 23:55

Atualizar

Você deve especificar o local de saída do WGET com -O /path/to/file

deiga
fonte
2
Se estiver usando o launchd, consulte apple.stackexchange.com/questions/3030/…
2
Você não precisa necessariamente de sudo. Os usuários individuais podem ter seus próprios crontabs
Doug Harris
6

O daemon cron pode ser ativado por um simples:

sudo touch /private/etc/crontab

É aconselhável digitar o caminho completo do seu / usr / local / bin / wget (ou onde quer que ele esteja). Cron não conhece o $ PATH do usuário. Espero que ajude.


fonte
5

Você pode usar o Cronnix, que é uma interface gráfica gratuita para o cron:

http://www.macupdate.com/app/mac/7486/cronnix/

nuc
fonte
1
O cronnix foi oficialmente descontinuado a montante. Pode parar de funcionar corretamente (ou de todo) nas versões recentes do macOS.
Andrii Abramov
4

Se você estiver achando a sintaxe da linha de comando (etc) muito confusa / misteriosa, pode procurar na ferramenta GUI para visualizar / editar / criar esses trabalhos.

No passado, eu usei o Lingon , que também já foi disponibilizado na Mac App Store. Não preciso usá-lo com muita frequência, mas é muito útil quando o faço!

robsoft
fonte
1

Uma solução mais elegante (que o cron) é usar as notificações do iCal + Applescript.

Primeiro, inicie o AppleScript Editor (localizado em / Application / Utilities) e cole o seguinte código:

set the destination_file to ("~/Downloads/book.pdf")

set the contentLink to "http://www.math.columbia.edu/algebraic_geometry/stacks-git/book.pdf"

tell application "URL Access Scripting"
    download contentLink to destination_file replacing yes
end tell

Salve o script e feche o editor de scripts de maçãs.

Abra o seu iCal e crie um novo evento para hoje, definindo a hora que desejar, selecione "repita: todos os dias" e como alarme "Executar script" e selecione seu AppleScript.

Se você deseja ser notificado para cada download, pode adicionar outro alarme com uma "Mensagem com som", "na data".

nuc
fonte
1

Eu recomendo macarrão . Sua vantagem é que, quando você define um trabalho para ser executado uma vez por dia, ele é executado sempre que o computador estiver ligado, independentemente da hora. Portanto, você não perderá um emprego porque o computador estava desligado no horário especificado.

O macarrão é uma ferramenta que lida com a manutenção regular do Mac OS X, incluindo o processo de privilégios de reparo do Mac OS X e a manutenção no estilo Unix. Você poderia fazer isso sozinho, mas não tem coisas mais interessantes a fazer com o seu tempo?

amorfis
fonte