Mac OS X: no comando não está funcionando

42

Vou agendar um trabalho usando at command. Aqui eu tentei o seguinte comando:

$ at now + 1 minute
echo 'Test at command'
<EOD>

Vi que o trabalho está agendado usando -l. No entanto, não vi eco.

Eu acho que talvez seja necessário adicionar o usuário ao arquivo at.allow. Não consigo encontrar at.allow no meu Mac (Snow Leopard). Não sabe o que preciso fazer para testar isso no comando?

David.Chu.ca
fonte
Eu tentei ler informações do homem em. Ele mencionou que "Se o arquivo _PERM_PATH / at.allow existir, apenas os nomes de usuário mencionados nele poderão usar em ... Se ... at.allow não existir, _PERM_PATH / at.deny será verificado, .." I não tenho certeza do que é _PERM_PATH.
No caso do Apple OSX Leopard, PERM_PATH para "at" é / usr / lib / cron.
Richard Hoskins
Para o Mac OS X Lion é/var/at
Stefan Schmidt

Respostas:

40

Para habilitar o atrundaemon necessário , como man atrundiz, execute:

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

como raiz (por exemplo, via sudo). Depois de fazer isso, /var/at/será o diretório principal (embora a maneira mais simples seja usar atcomo root - por exemplo, mais uma vez, por sudo! -).

Alex Martelli
fonte
Eu sei que você precisa ser root para ativar o daemon atrun, mas não precisa ser root para executar comandos "at". (A menos que esses comandos requerem raiz.)
Richard Hoskins
11
essa ativação ou atrun sobrevive às reinicializações?
Eric O Lebigot
De acordo com a página de manual, sim, mas eu não tentei.
Stefan Schmidt
11
se /var/at/at.denyestiver vazio, você não precisará ser root para fazer fila nos trabalhos; caso contrário, poderá adicionar seu nome de usuário /var/at/at.allow.
Stefan Schmidt
Eu deveria ler as páginas do manual primeiro ... Obrigado!
Polym
13

No Snow Leopard, você precisa:

  1. Edite /System/Library/LaunchDaemons/com.apple.atrun.plist, altere o nó filho desativado de true-> false.

  2. Descarregue a corrente /System/Library/LaunchDaemons/com.apple.atrun.plistcom:

    sudo launchctl unload -F /System/Library/LaunchDaemons/com.apple.atrun.plist
    

    Em seguida, carregue a versão editada

    sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.atrun.plist
    
  3. Teste se ele funciona com:

    echo blah | at now+1
    
  4. Caso o eco falhe por um motivo diferente, você poderá pelo menos ver a fila sendo limpa:

    atq
    
Somantra
fonte
11
Este é o único que funcionou para mim no OSX 10.10 Yosemite.
Colin Dean
5

Eu tentei isso no OS X Lion e parecia funcionar.

Primeiro ative o atrundaemon:

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

Em seguida, adicione [seu nome de usuário] a /var/at/at.allow.

Quando executado, você receberá saída em /var/mail/[your username]

Acho que os itens na fila batchdemoram alguns minutos para serem realmente executados.

chris838
fonte
2

Outros já respondeu sobre a ser desativada em Mac OS X, e eu não sei sobre isso, mas há um outro problema: Onde você espera que o seu eco comando para imprimir a sua mensagem? Em outros sistemas Unix que eu usei, ele não imprime na mesma janela do shell em que você deu o comando at . Lembre-se de que, quando a tarefa at for executada, talvez você nem esteja mais conectado.

Tente escrever algo em um arquivo e veja se esse arquivo aparece no momento certo.

Thomas Padron-McCarthy
fonte
A página de manual declara que a saída será enviada para você.
Stefan Schmidt
@ Stefan: Sim, e isso funcionou bem nos anos 80, quando o correio era tratado localmente na mesma máquina, mas a minha experiência (com outros tipos de Unix que não o Mac OS X) é que hoje em dia você não deve receber nenhum correio.
Thomas Padron-McCarthy
0

Minha instalação do OS X (10.4) diz em man at:

NOTA
     at, batch, atq, atrm estão todos desabilitados por padrão no Mac OS X.

Você ativou de atrunacordo com as instruções lá?

Greg Hewgill
fonte
Eu tentei encontrar onde está o atrun no meu Mac. Na web, outra opção é adicionar usuário a at.allow. Não foi possível encontrar este arquivo (at.allow) também.