Eu tenho um trabalho bastante simples que gostaria de executar a cada hora. Eu poderia fazer isso usando cron
, mas pensei em usar isso para aprender launchd
, pois ouço coisas boas sobre isso. Eu tenho a man launchd.plist
página como referência, mas estou procurando algo baseado mais na criação de um exemplo de trabalho.
19
cron
pergunta, o superuser.com não seria o lugar certo? Comolaunchd
é a versão da Applecron
(e tambémdaemontools
, e possivelmente outras coisas), achei que essa era minha melhor opção.Respostas:
launchd
executa Daemons (/Library/LaunchDaemons
ou/System/Library/LaunchDaemons
) como root e os executa independentemente de os usuários estarem logados ou não. Os agentes de inicialização (/Library/LaunchAgents/
ou~/Library/LaunchAgents/
) são executados quando um usuário está conectado como esse usuário. Você não pode usar o setuid para alterar o usuário que está executando o script nos daemons. O/System
diretório é reservado para tarefas do Mac OS X, portanto, recomendo colocar suaslaunchd
listas na pasta/Library
ou na~/Library
pasta, conforme for necessário.Portanto, o primeiro passo é determinar se você está criando um agente ou um daemon.
O segundo passo é criar seu
.plist
arquivo. Você pode usar programas baseados em GUI, como o Lingon, para ajudar com isso ou apenas usar seu editor de texto favorito:Uma amostra
.plist
para executar um script a cada hora (StartInterval
ouStartIntervalCalendar
são as chaves que queremos -StartInterval
para que um item ocorra a cadax
segundo,StartIntervalCalendar
por um tempo e / ou data específicos. Consulte 126907 no SuperUser para obter um exemplo que fiz com StartCalendarInterval):Modifique o
.plist
necessário para apontar para seu script e quaisquer argumentos conforme necessário (os argumentos estão em linhas separadas) e salve o arquivo com o mesmo nome que o valor do Label, mas com.plist
no final. (por exemplo,local.my-mac.flickrstats
seria salvo comolocal.my-mac.flickrstats.plist
). Se você ainda não o fez, mova esse.plist
arquivo para/Library/LaunchDaemons
ao criar um Daemon (executado o tempo todo) ou para~/Library/LaunchAgents
(apenas você está logado) ou/Library/LaunchAgents
(qualquer usuário está logado).Para iniciar o trabalho que você deseja executar,
launchctl
conforme necessário, para carregar o arquivo. Para itens em/Library
, você deve usar sudo: por exemplo,sudo launchctl load -w /PATH/TO/PLIST
Para referência, consulte também as seguintes perguntas sobre Superusuário : Comando Launchd como root , Carregar um daemon em todo o sistema e Como posso executar um script para executar todos os dias
fonte
Sei que não é um bom tutorial, mas você pode dar uma olhada no Daemons and Services Programming Guide da Apple, que possui uma seção sobre Agendamento de trabalhos programados.
Eu sei que não é um tutorial completo, mas, com ele, você pode entender o básico de
launchd
.Ele também fornece um exemplo de uma
crond
tarefa:fonte
Isso me ajudou muito: http://launchd.info
Abrange a configuração, administração e solução de problemas usando o Terminal ou a GUI launchControl launchd . Exemplos são fornecidos também.
fonte
Eu sei que você estava procurando um tutorial, mas, por acaso, alguém vem aqui como parte de uma ferramenta para ajudá-lo a criar / editar entradas launchd, eu já usei isso antes: Lingon (sourceforge)
Não está mais sendo desenvolvido ativamente, mas o que existe lá funciona (e obviamente inclui a fonte etc.). Usei-o no Snow Leopard para agendar backups na nuvem da Amazon etc.
fonte