Por que minhas tarefas estão sendo executadas imediatamente no OS X?

0

Eu quero agendar eventos para os horários exatos no Mac OS X. Parece que o comando 'at' é a maneira mais simples de fazer isso.

Eu habilitei o atrun usando o comando:

launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

Para testar, estou usando o seguinte script BASH de uma linha:

echo 'foo' >> path/to/log.txt | at now + 2 minutes

Quando executo o script, recebo uma saída como:

job 17 at Sat May 15 12:57:00 2010

onde '12: 57: 00 'é de fato 2 minutos no futuro. Mas o comando echo é executado imediatamente: a linha 'foo' é adicionada ao log.txt imediatamente.

Como posso trabalhar no meu trabalho?

    
por Gabe 15.05.2010 / 19:02

1 resposta

0

Você está fazendo errado. at lê os comandos do stdin como texto, não pode magicamente conhecê-los de um pipeline.

Seu comando ...

echo 'foo' >> path/to/log.txt | at now + 2 minutes

... executa ambos echo e at ao mesmo tempo, em um pipeline. (Pense em cat somefile | grep sometext ) Então at receberia a palavra foo em sua stdin. No entanto, a saída de echo é redirecionada para um arquivo, portanto, at não recebe nada.

O comando correto seria:

echo "echo 'foo' >> path/to/log.txt" | at now + 2 minutes
    
por 15.05.2010 / 19:26

Tags