Erro ao adicionar cronjobs no Mac OS X Lion


37

Até agora, nunca tentei adicionar uma crontask no meu Mac. Para minha surpresa, isso gerou um erro ..

[hayek@mac:/www/] 02:33:22 PM: crontab -e                                                                                                         1 .
crontab: no crontab for hayek - using an empty one
crontab: "/usr/bin/vi" exited with status 1

Como posso descobrir por que está lançando esse erro?

Estou executando o Mac OS X Lion 10.7.2


2
Você está usando cron por um motivo específico? No OS x, ele foi amplamente substituído pelo launchd
Daniel Beck

Eu queria usar o vnstat para rastrear o uso da largura de banda, o que requer um cronjob. Sei que poderia usar um aplicativo alternativo, mas ainda assim seria útil saber como fazer o cron funcionar no Mac, se possível.
perfil

11
Você tentou crontab fileinstalar a tabela a partir de um arquivo externo? Ou usando um editor diferente como EDITOR=NANO crontab -e?
Lri

@DanielBeck Eu uso o cron porque é muito mais rápido configurar uma nova entrada do que o launchd.
Doug Harris

O que crontab -lmostra? Existem outras mensagens em /var/log/cron.logou /var/log/system.log?
Doug Harris

Respostas:


41

Em ~ / .vimrc, adicione:

    autocmd tipo de arquivo crontab setlocal nobackup nowritebackup

grande truque simples! funciona bem para mim.
Tri Nguyen

Esta é a melhor resposta e funciona bem - muito mais simples do que a que envolve a criação de uma variável env no perfil do shell, bem como a edição~/.vimrc
RichVel

Marcar isso como a resposta correta, já que minha própria resposta não é mais apropriada nem mais eficaz.
Hayek

11
Isso funciona também no Mac OS High Sierra! Obrigado por postar isso
Kearney Taaffe

44

A questão acabou por ser vie nada a ver com o cron. Fazendo export EDITOR=vimconsertou


2
Sim, eu entendo que você encontrou o problema, e a solução é ... o que?
Gökhan Barış Aker

3
Tente fazer export EDITOR=vime tente.
Hayek

Obrigado @Hayek. Desculpe pela latência, não pude responder tão rapidamente quanto você: P. No entanto, rodar crontab com o todo-poderoso 'sudo' resolveu meu problema.
Gökhan Barış Aker

Feliz por você fazer isso funcionar.
Hayek

11
Acabei de ter o mesmo problema. A configuração EDITOR=vimnão foi corrigida - apenas me levou a um novo erro crontab: temp file must be edited in place. Eu prefiro muito o vim, no entanto, edito cronjobs com tanta frequência que fico feliz em fazê-lo NANO... embora, se alguém conhece a correção, estou muito interessado.
ricardo

35

Em um problema relacionado, se você receber a mensagem:

crontab: temp file must be edited in place

Experimentar:

1) Adicionar ao .bash_profile

alias crontab="VIM_CRONTAB=true crontab"

2) Adicionar ao .vimrc

if $VIM_CRONTAB == "true"
    set nobackup
    set nowritebackup
endif

Fonte: http://drawohara.com/post/6344279/crontab-temp-file-must-be-edit-in-place


2
Essa é a resposta correta!!
Jacob

Isso funcionou para mim e acho que essa deve ser a resposta correta.
Shubhamoy 17/11

11
Para csh ou tcsh, usealias crontab "export VIM_CRONTAB=true; /usr/bin/crontab"
JAFaucett 22/11

11
Também acho que essa é uma resposta melhor, embora a pergunta do OP não mencione o erro exato @xgMz descrito. O crontab parece não gostar do backup do vim no comportamento de gravação / salvamento, portanto, desativá-lo como descrito aqui funciona.
Shyam Habarakada 22/03

Acabei de ter esse problema com o vim e o cron no macOS Sierra. Essa é a resposta correta!
James McCormac


2

Eu tive o mesmo problema e segui os conselhos publicados para criar a tabela:

crontab file

E isso criou a tabela cron, e então eu pude executar

crontab -e

com o vi como editor padrão e não teve problemas. É como se o vi não pudesse salvar o arquivo, mas, uma vez criado, poderia acessá-lo. Isso é consistente com a capacidade de executar:

sudo crontab -e 

Como curiosidade, as tabelas são armazenadas em

/usr/lib/cron/tabs/UserName

que só pode ser lido como sudo.


0

A melhor maneira de diagnosticar isso seria criar um crontab novo com uma entrada simples como:

* * * * * /bin/date >> /tmp/cron_output

Se isso funcionar, o problema está no comando específico que você adicionou. Você poderia compartilhá-lo conosco e também compartilhar os resultados ao executá-lo diretamente do Terminal.app, em vez de um crontab?


11
Mesmo erro com o comando que você sugeriu. No terminal, /bin/dateretorna Wed Nov 23 15:03:49 PST 2011como esperado.
Hayek

OK, acabado de ver a sua resposta, o que explica por que você iria obter o mesmo erro - apenas pensei que poderia ajudar a diagnosticar o problema :)
tog22

0

O cron foi descontinuado em favor do launchd.

O Lingon é uma excelente ferramenta para configurar agentes launchd; costumava ser gratuito, mas agora parece ser $ 3.

A Wikipedia possui uma boa página de lançamento descrevendo todas as chaves e a ferramenta launchctl que você usa para ativá-las / desativá-las.



-1

Eu vi esse mesmo problema no OSX. A resposta é executar como root usando o comando sudo, por exemplo:

sudo crontab -e

Eu recebi essa ideia de Gökhan Barış Aker acima.


com sudovocê está indo para empregos lugar cron sob o usuário root. Os arquivos cron são diferentes para o usuário normal e o root.
Timofey
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.