Errore durante l'aggiunta di cronjobs in Mac OS X Lion


37

Fino ad ora, non ho mai provato ad aggiungere un crontask sul mio Mac. Con mia sorpresa, ha gettato un errore ..

[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

Come posso capire perché sta lanciando quell'errore?

Sto eseguendo Mac OS X Lion 10.7.2


2
Stai usando cron per un motivo specifico? Su OS x è stato ampiamente sostituito da launchd
Daniel Beck

Volevo usare vnstat per tenere traccia dell'utilizzo della larghezza di banda, che richiede un cronjob. So che potrei usare un'app alternativa, ma sarebbe comunque utile sapere come far funzionare cron su Mac, se possibile.
Hayek,

1
Hai provato crontab filea installare la tabella da un file esterno? O usando un editor diverso come EDITOR=NANO crontab -e?
Lri,

@DanielBeck Uso cron perché è molto più veloce impostare una nuova voce rispetto a launchd.
Doug Harris,

Cosa crontab -lmostra? Ci sono altri messaggi in /var/log/cron.logo /var/log/system.log?
Doug Harris,

Risposte:


41

In ~ / .vimrc aggiungi:

    autocmd filetype crontab setlocal nobackup nowritebackup

grande semplice trucco! funziona bene per me.
Tri Nguyen,

Questa è la risposta migliore e funziona bene - molto più semplice di quella che comporta l'impostazione di una variabile env nel profilo della shell e la modifica~/.vimrc
RichVel

Contrassegnare questa come risposta corretta poiché la mia risposta non è più appropriata né la più efficace.
Hayek,

1
Funziona anche con Mac OS High Sierra! Grazie per aver pubblicato questo post
Kearney Taaffe il

44

Il problema si è rivelato essere vie niente a che fare con cron. Farlo export EDITOR=vimrisolto


2
Sì, ho capito che hai riscontrato il problema e la soluzione è ... cosa?
Gökhan Barış Aker,

3
Prova a fare export EDITOR=vimpoi provalo .
Hayek,

Grazie @Hayek. Scusate la latenza, non ho potuto rispondere così velocemente come avete fatto voi: P. Tuttavia, eseguire crontab con l'onnipotente "sudo" ha risolto il mio problema.
Gökhan Barış Aker,

Sono contento che tu abbia funzionato.
Hayek,

1
Ho appena avuto lo stesso problema. L'impostazione EDITOR=vimnon ha risolto il problema, mi ha solo portato a un nuovo errore crontab: temp file must be edited in place. Preferisco di gran lunga vim, tuttavia modifico i cronjob così raramente che sono abbastanza felice di farlo NANO... anche se se qualcuno conosce la correzione, sono molto interessato.
ricardo

35

Su un problema correlato, se ricevi il messaggio:

crontab: temp file must be edited in place

Provare:

1) Aggiungi a .bash_profile

alias crontab="VIM_CRONTAB=true crontab"

2) Aggiungi a .vimrc

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

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


2
Questa è la risposta corretta !!
Jacob,

Questo ha funzionato per me e penso che questa dovrebbe essere la risposta corretta.
Shubhamoy,

1
Per csh o tcsh, usaalias crontab "export VIM_CRONTAB=true; /usr/bin/crontab"
JAFaucett il

1
Penso anche che questa sia una risposta migliore anche se la domanda dell'OP non menziona l'errore esatto descritto da @xgMz. crontab non sembra apprezzare il backup di vim sul comportamento di scrittura / salvataggio, quindi disabilitarlo come descritto qui funziona.
Shyam Habarakada,

Ho appena avuto questo problema con vim e cron su macOS Sierra. Questa è la risposta corretta!
James McCormac,


2

Ho avuto lo stesso problema e ho seguito i consigli pubblicati per la creazione della tabella:

crontab file

E quello ha creato la tabella cron, e poi sono stato in grado di eseguire

crontab -e

con vi come editor predefinito e non ha avuto problemi. È come se vi non potesse salvare il file, ma una volta creato, potrebbe accedervi. Ciò è coerente con la possibilità di eseguire:

sudo crontab -e 

Per curiosità, i tavoli sono memorizzati

/usr/lib/cron/tabs/UserName

che può essere letto solo come sudo.


0

Il modo migliore per diagnosticare questo sarebbe creare un nuovo crontab con una semplice voce come:

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

Se funziona, il problema riguarda il comando specifico che hai aggiunto. Potresti condividerlo con noi e anche condividere i risultati quando lo esegui direttamente da Terminal.app, piuttosto che da un crontab?


1
Stesso errore con il comando che hai suggerito. Nel terminale, /bin/dateritorna Wed Nov 23 15:03:49 PST 2011come previsto.
Hayek,

OK, ho appena visto la tua risposta, che spiega perché avresti avuto lo stesso errore - ho pensato che potesse aiutare a diagnosticare il problema :)
tog22

0

cron è deprecato a favore di launchd.

Lingon è un ottimo piccolo strumento per impostare agenti lanciati; era gratuito ma ora sembra $ 3.

Wikipedia ha una buona pagina di avvio che descrive tutti i tasti e lo strumento launchctl che usi per attivarli / disattivarli.



-1

Ho visto questo stesso problema su OSX. La risposta è eseguire come root usando il comando sudo, ad esempio:

sudo crontab -e

Ho avuto l'idea da Gökhan Barış Aker sopra.


con sudote inserirai i lavori cron nell'utente root. I file cron sono diversi per l'utente normale e quello principale.
Timofey,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.