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

Hayek
sumber
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
pengguna442586
sumber
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

Hayek
sumber
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

xgMz
sumber
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
8

Editor Anda pada variabel sistem EDITOR adalah vi dan vi tidak berfungsi.

Mencoba:

export EDITOR=nano
Abdel Karim Mateos Sanchez
sumber
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.

pengguna214155
sumber
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?

tog22
sumber
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.

Chrish
sumber
-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.

Pantai Nathan
sumber
dengan sudoAnda akan menempatkan pekerjaan cron di bawah pengguna root. File cron berbeda untuk pengguna normal dan root.
Timofey