Eu teria o primeiro trabalho "emitir" seu próprio sinal (isso é um comando):
initctl emit job-a-done
E pule nisso no meu trabalho inicial ...
start on started cups and job-a-done
Este é descrito no livro de receitas .
Eu tenho um trabalho Upstart configurado usando a sub-rotina task
, que outro trabalho depende de ser concluído antes de ser iniciado. No entanto, esse trabalho também deve aguardar que um serviço diferente seja iniciado antes de ser iniciado. Isso causa alguns problemas - o trabalho será iniciado se a tarefa for concluída antes do início da tarefa dependente, mas não será iniciada se a tarefa for concluída após o início da tarefa.
Por exemplo, se task-a
for a tarefa da qual o trabalho depende, então este é o arquivo de configuração do trabalho:
start on (stopped task-a and started cups)
script
echo do stuff
end script
Como posso obter um emprego como o acima para começar assim que a tarefa terminar mas depois que outro trabalho for iniciado? Eu posso modificar a tarefa se necessário, mas não acho que dormir para sempre seja uma solução muito boa. A versão do Ubuntu, neste caso, é 12.04.
Eu teria o primeiro trabalho "emitir" seu próprio sinal (isso é um comando):
initctl emit job-a-done
E pule nisso no meu trabalho inicial ...
start on started cups and job-a-done
Este é descrito no livro de receitas .
OK, então depois de muitos problemas tentando fazer com que isso funcione, eu desisti. Eu tentei:
Obtendo o trabalho para iniciar após um trabalho ser iniciado e outro ter parado (uma tarefa)
start on (started cups and stopped my-task)
Conseguindo que o trabalho comece depois que um trabalho é iniciado e o outro tenha emitido um sinal (veja a resposta de Oli)
start on (started cups and my-task-finished)
Obtendo o trabalho para iniciar depois que os dois trabalhos forem iniciados (o trabalho de tarefa aguarda infinitamente)
start on (started cups and started my-task)
Nenhuma das tentativas acima trabalhadas. Para referência, eu queria que o trabalho fosse iniciado assim que o CUPS fosse iniciado e minha tarefa fosse concluída. Quando o CUPS tinha impressoras configuradas, começava devagar e o script rodava corretamente (nos casos 1 e 3, 2 nunca funcionavam corretamente). No entanto, quando o CUPS não tinha nenhuma impressora configurada, ela iniciava instantaneamente (quero dizer, WTF Upstart, por que isso acontece em primeiro lugar?), Mas, mais importante, meu trabalho não seria executado .
Cheguei à conclusão de que o Upstart no Ubuntu 12.04 LTS está completamente quebrado. Não tenho certeza se esse é um bug corrigido em uma versão mais recente do Ubuntu, mas isso é um problema muito grande.
Então, a solução. Não use o Upstart. Alterne para o systemd, se possível, ou use o SysV nos casos em que ele não estiver disponível / não viável para manutenção. Ah, e a Canonical, por favor conserte isso.