Tornando o trabalho “at” no macOS

0

Estou trabalhando em um servidor do CentOS e agendo uma tarefa com o comando at

# echo "touch a_long_file_name_file.txt" | at now + 1 minute
job 2 at Wed Oct 31 13:52:00 2018

Um minuto depois,

# ls | grep a_long_file_name_file.tx
a_long_file_name_file.txt

o arquivo foi criado com sucesso.

No entanto, se eu o executar localmente no meu macOS,

$ echo "touch a_long_file_name_file.txt" | at now + 1 minute
job 31 at Wed Oct 31 13:58:00 2018

Minutos depois, caso não tenha feito tal arquivo.

Eu verifiquei a versão de at no servidor do CentOS

AUTHOR:  
At was mostly written by Thomas Koenig, [email protected].  
2009-11-14                                             

Por outro lado, a versão do macOS

AUTHORS
     At was mostly written by Thomas Koenig <[email protected]>.  The time parsing routines are
     by
     David Parsons <[email protected]>, with minor enhancements by
     Joe Halpin <[email protected]>.

BSD                            January 13, 2002                            

Descobri que at , atq , atrm não são de GNU coreutils.

$ ls /usr/local/opt/coreutils/libexec/gnubin/ | grep at
cat
date
pathchk
realpath
stat
truncate

Como eu poderia instalar a versão mais recente do at no macOS e fazer com que funcionasse?

    
por JawSaw 31.10.2018 / 07:06

1 resposta

8

Em vez de atualizar at e as ferramentas associadas no macOS, vamos tentar tornar o padrão at no trabalho do macOS.

O manual at no macOS diz (minha ênfase):

IMPLEMENTATION NOTES

Note that at is implemented through the launchd(8) daemon periodically invoking atrun(8), which is disabled by default. See atrun(8) for information about enabling atrun.

Verificando o manual atrun :

DESCRIPTION

The atrun utility runs commands queued by at(1). It is invoked periodically by launchd(8) as specified in the com.apple.atrun.plist property list. By default the property list contains the Disabled key set to true, so atrun is never invoked.

Execute the following command as root to enable atrun:

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

O que eu acho que pode estar acontecendo aqui, e o que está respondendo às suas outras perguntas relacionadas com at , é que você não ativou atrun em sua instalação do macOS.

No macOS Mojave, além de executar o comando launchctl acima (com sudo ), você também terá que adicionar /usr/libexec/atrun à lista de comandos / aplicativos que possuem "Acesso total ao disco" no campo " Segurança e Privacidade "preferências no sistema. Observe que não sei as implicações de segurança disso. Pessoalmente, eu também adicionei /usr/sbin/cron lá para fazer com que os trabalhos do cron funcionem (não mostrado na imagem abaixo, pois é de outro computador).

Para adicionar um comando do caminho /usr (que não aparece na caixa de diálogo de seleção de arquivos no macOS), pressione Cmd + Shift + G quando a caixa de diálogo de seleção de arquivos estiver aberta ( depois de pressionar o ícone de adição / botão na parte inferior da janela).

Você não precisa reinicializar a máquina após essas alterações. Eu testei isso no macOS Mojave 14.10.1.

    
por 31.10.2018 / 09:43

Tags