Kesalahan menambahkan cronjobs di Mac OS X Lion


37

Sampai sekarang, saya belum pernah mencoba menambahkan crontask di Mac saya. Di luar dugaan, ada kesalahan ..

[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

Bagaimana saya mencari tahu mengapa itu melempar kesalahan itu?

Saya menjalankan Mac OS X Lion 10.7.2


2
Apakah Anda menggunakan cron untuk alasan tertentu? Pada OS x sebagian besar telah digantikan oleh launchd
Daniel Beck

Saya ingin menggunakan vnstat untuk melacak penggunaan bandwidth, yang membutuhkan cronjob. Saya tahu saya bisa menggunakan aplikasi alternatif, tetapi masih berguna untuk mengetahui cara membuat cron bekerja di Mac, jika memungkinkan.
Hayek

1
Sudahkah Anda mencoba crontab filemenginstal tabel dari file eksternal? Atau menggunakan editor yang berbeda seperti EDITOR=NANO crontab -e?
Lri

@DanielBeck Saya menggunakan cron karena lebih cepat untuk mengatur entri baru daripada launchd.
Doug Harris

Apa yang crontab -lditunjukkan? Apakah ada pesan lain di dalam /var/log/cron.logatau /var/log/system.log?
Doug Harris

Jawaban:


41

Di ~ / .vimrc tambahkan:

    autocmd filetype crontab setlocal nobackup nowritebackup

trik sederhana yang hebat! bekerja dengan baik untuk saya.
Tri Nguyen

Ini adalah jawaban terbaik dan bekerja dengan baik - jauh lebih sederhana daripada yang melibatkan pengaturan variabel env di profil shell serta pengeditan~/.vimrc
RichVel

Menandai ini sebagai jawaban yang benar karena jawaban saya sendiri tidak lagi sesuai atau paling efektif.
Hayek

1
Ini berfungsi di Mac OS High Sierra juga! Terima kasih telah memposting ini
Kearney Taaffe

44

Masalahnya ternyata vidan tidak ada hubungannya dengan cron. Melakukan export EDITOR=vimperbaikannya


2
Ya saya mengerti Anda menemukan masalah, dan solusinya adalah ... apa?
Gökhan Barış Aker

3
Coba lakukan export EDITOR=vimlalu mencobanya.
Hayek

Terima kasih @Hayek. Maaf untuk latensi, saya tidak dapat merespons secepat yang Anda lakukan: P. Namun, menjalankan crontab dengan 'sudo' yang maha kuasa menyelesaikan masalah saya.
Gökhan Barış Aker

Senang Anda berhasil.
Hayek

1
Saya baru saja mengalami masalah yang sama. Pengaturan EDITOR=vimtidak memperbaikinya - itu hanya membawa saya ke kesalahan baru crontab: temp file must be edited in place. Saya lebih suka vim, namun saya jarang mengedit cronjobs sehingga saya cukup senang melakukannya NANO... meskipun jika seseorang mengetahui perbaikannya, saya sangat tertarik.
ricardo

35

Pada masalah terkait, jika Anda mendapatkan pesan:

crontab: temp file must be edited in place

Mencoba:

1) Tambahkan ke .bash_profile

alias crontab="VIM_CRONTAB=true crontab"

2) Tambahkan ke .vimrc

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

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


2
Ini jawaban yang benar !!
Jacob

Ini bekerja untuk saya dan saya merasa ini harus menjadi jawaban yang benar.
Shubhamoy

1
Untuk csh atau tcsh, gunakanalias crontab "export VIM_CRONTAB=true; /usr/bin/crontab"
JAFaucett

1
Saya juga berpikir ini adalah jawaban yang lebih baik walaupun pertanyaan dari OP tidak menyebutkan kesalahan persis @xgMz yang dijelaskan. crontab tampaknya tidak menyukai cadangan vim pada perilaku write / save sehingga menonaktifkannya seperti yang dijelaskan di sini hanya berfungsi.
Shyam Habarakada

Saya baru saja mengalami masalah ini dengan vim dan cron di macOS Sierra. Ini jawaban yang benar!
James McCormac


2

Saya memiliki masalah yang sama dan mengikuti saran yang diposting untuk membuat tabel:

crontab file

Dan itu menciptakan tabel cron, dan kemudian saya bisa berlari

crontab -e

dengan vi sebagai editor default dan tidak punya masalah. Seolah-olah vi tidak dapat menyimpan file, tetapi begitu dibuat, ia dapat mengaksesnya. Ini konsisten dengan kemampuan menjalankan:

sudo crontab -e 

Sebagai rasa ingin tahu, tabel disimpan di

/usr/lib/cron/tabs/UserName

yang hanya bisa dibaca sebagai sudo.


0

Cara terbaik untuk mendiagnosis ini adalah dengan membuat crontab segar dengan entri sederhana seperti:

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

Jika itu berhasil maka masalahnya adalah dengan perintah khusus yang Anda tambahkan. Bisakah Anda membagikannya kepada kami, dan juga membagikan hasilnya ketika Anda menjalankannya langsung dari Terminal.app, daripada dari crontab?


1
Kesalahan yang sama dengan perintah yang Anda sarankan. Di terminal, /bin/datekembali Wed Nov 23 15:03:49 PST 2011seperti yang diharapkan.
Hayek

OK, baru saja melihat jawaban Anda, yang menjelaskan mengapa Anda akan mendapatkan kesalahan yang sama - hanya berpikir itu mungkin membantu untuk mendiagnosis masalah :)
tog22

0

cron tidak digunakan lagi karena launchd.

Lingon adalah alat kecil yang hebat untuk mengatur agen launchd; dulu gratis tetapi tampaknya sekarang menjadi $ 3.

Wikipedia memiliki halaman launchd yang baik yang menggambarkan semua kunci dan alat launchctl yang Anda gunakan untuk mengaktifkan / menonaktifkannya.



-1

Saya melihat masalah yang sama di OSX. Jawabannya adalah berjalan sebagai root menggunakan perintah sudo, mis:

sudo crontab -e

Saya mendapat ide itu dari Gökhan Barış Aker di atas.


dengan sudoAnda akan menempatkan pekerjaan cron di bawah pengguna root. File cron berbeda untuk pengguna normal dan root.
Timofey
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.