เกิดข้อผิดพลาดในการเพิ่ม cronjobs ใน Mac OS X Lion


37

จนถึงตอนนี้ฉันไม่เคยลองเพิ่ม crontask บน Mac ของฉัน แปลกใจของฉันมันโยนข้อผิดพลาด ..

[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

ฉันจะหาสาเหตุที่ทำให้เกิดข้อผิดพลาดได้อย่างไร

ฉันใช้ Mac OS X Lion 10.7.2


2
คุณใช้ cron ด้วยเหตุผลเฉพาะหรือไม่? บน OS x นั้นส่วนใหญ่ถูกแทนที่โดย launchd
Daniel Beck

ฉันต้องการใช้ vnstat เพื่อติดตามการใช้แบนด์วิดท์ซึ่งต้องใช้ cronjob ฉันรู้ว่าฉันสามารถใช้แอพสำรองได้ แต่มันก็ยังมีประโยชน์ที่จะรู้วิธีที่จะทำให้ cron ทำงานบน Mac ได้ถ้าเป็นไปได้
Hayek

1
คุณพยายามcrontab fileติดตั้งตารางจากไฟล์ภายนอกหรือไม่? หรือใช้โปรแกรมแก้ไขแตกต่างกันเช่นEDITOR=NANO crontab -e?
Lri

@DanielBeck ฉันใช้ cron เพราะมันเร็วกว่ามากในการตั้งค่ารายการใหม่กว่า launchd
Doug Harris

สิ่งที่ไม่crontab -lแสดง? มีข้อความอื่น ๆ ใน/var/log/cron.logหรือ/var/log/system.log?
Doug Harris

คำตอบ:


41

ใน ~ / .vimrc เพิ่ม:

    autocmd filetype crontab setlocal nobackup nowritebackup

เคล็ดลับง่าย ๆ ที่ดี! ทำงานได้ดีสำหรับฉัน
Tri Nguyen

นี่เป็นคำตอบที่ดีที่สุดและใช้งานได้ดี - ง่ายกว่าการตั้งค่าตัวแปร env ในโปรไฟล์ของเชลล์และการแก้ไข~/.vimrc
RichVel

การทำเครื่องหมายว่านี่เป็นคำตอบที่ถูกต้องเนื่องจากคำตอบของฉันไม่เหมาะสมและไม่มีประสิทธิภาพ
Hayek

1
มันใช้งานได้ใน Mac OS High Sierra ด้วย! ขอขอบคุณที่โพสต์สิ่งนี้
Kearney Taaffe

44

ปัญหากลายเป็นviและไม่มีอะไรเกี่ยวข้องกับ cron ทำการexport EDITOR=vimแก้ไขมัน


2
ใช่ฉันเข้าใจว่าคุณพบปัญหาและวิธีแก้ไขคืออะไร
GökhanBarış Aker

3
ลองทำexport EDITOR=vimแล้วไปเลย
Hayek

ขอบคุณ @ Hayek ขออภัยในความล่าช้าฉันไม่สามารถตอบสนองได้อย่างรวดเร็วเหมือนที่คุณทำ: P อย่างไรก็ตามการใช้ crontab กับ 'sudo' ยิ่งใหญ่ช่วยแก้ปัญหาของฉันได้
GökhanBarış Aker

ดีใจที่คุณได้ทำงาน
Hayek

1
ฉันเพิ่งมีปัญหาเดียวกัน การตั้งค่าEDITOR=vimไม่ได้แก้ไขมัน - crontab: temp file must be edited in placeมันก็ทำให้ฉันมีข้อผิดพลาดใหม่ ฉันชอบเสียงเรียกเข้ามาก แต่ฉันแก้ไข cronjobs นาน ๆ ครั้งจนฉันมีความสุขพอที่จะทำมันในNANO... แต่ถ้ามีคนรู้วิธีแก้ไขฉันก็สนใจมาก
Ricardo

35

ในประเด็นที่เกี่ยวข้องหากคุณได้รับข้อความ:

crontab: temp file must be edited in place

ลอง:

1) เพิ่มใน. bash_profile

alias crontab="VIM_CRONTAB=true crontab"

2) เพิ่มใน. vimrc

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

ที่มา: http://drawohara.com/post/6344279/crontab-temp-file-must-be-edited-in-place


2
นี่คือคำตอบที่ถูกต้อง !!
จาค็อบ

สิ่งนี้ใช้ได้กับฉันและฉันรู้สึกว่านี่ควรเป็นคำตอบที่ถูกต้อง
Shubhamoy

1
สำหรับ csh หรือ tcsh ให้ใช้alias crontab "export VIM_CRONTAB=true; /usr/bin/crontab"
JAFaucett

1
ฉันคิดว่านี่เป็นคำตอบที่ดีกว่าแม้ว่าคำถามจาก OP ไม่ได้กล่าวถึงข้อผิดพลาดที่แน่นอน @xgMz อธิบาย crontab ดูเหมือนจะไม่ชอบการสำรองข้อมูลเป็นกลุ่มในพฤติกรรมการเขียน / บันทึกดังนั้นการปิดการใช้งานตามที่อธิบายไว้ที่นี่ก็ใช้งานได้
Shyam Habarakada

ฉันเพิ่งมีปัญหากับกลุ่มและ cron บน macOS Sierra นี่คือคำตอบที่ถูกต้อง!
James McCormac


2

ฉันมีปัญหาเดียวกันและทำตามคำแนะนำที่โพสต์เพื่อสร้างตาราง:

crontab file

และนั่นสร้างตาราง cron จากนั้นฉันก็สามารถวิ่งได้

crontab -e

กับ vi เป็นเครื่องมือแก้ไขเริ่มต้นและไม่มีปัญหา มันเหมือนกับว่า vi ไม่สามารถบันทึกไฟล์ แต่เมื่อสร้างแล้วมันสามารถเข้าถึงได้ สิ่งนี้สอดคล้องกับความสามารถในการทำงาน:

sudo crontab -e 

เป็นความอยากรู้ตารางจะถูกเก็บไว้ใน

/usr/lib/cron/tabs/UserName

ซึ่งสามารถอ่านเป็น sudo เท่านั้น


0

วิธีที่ดีที่สุดในการวินิจฉัยสิ่งนี้คือการสร้าง crontab ที่สดใหม่ด้วยรายการง่ายๆเช่น:

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

หากใช้งานได้แสดงว่าปัญหาเกิดขึ้นกับคำสั่งเฉพาะที่คุณได้เพิ่มไว้ คุณสามารถแบ่งปันกับเราและแบ่งปันผลลัพธ์เมื่อคุณเรียกใช้งานโดยตรงจาก Terminal.app ไม่ใช่จาก crontab


1
ข้อผิดพลาดเดียวกันกับคำสั่งที่คุณแนะนำ ในเทอร์มินัล/bin/dateส่งคืนWed Nov 23 15:03:49 PST 2011ตามที่คาดไว้
Hayek

ตกลงเพิ่งเห็นคำตอบของคุณซึ่งอธิบายว่าทำไมคุณถึงได้รับข้อผิดพลาดเดียวกัน - แค่คิดว่ามันอาจช่วยวินิจฉัยปัญหาได้ :)
tog22

0

cron เลิกใช้แล้วในความโปรดปรานของ launchd

Lingonเป็นเครื่องมือเล็ก ๆ ที่ยอดเยี่ยมสำหรับการตั้งค่าตัวแทน launchd; มันเคยเป็นฟรี แต่ตอนนี้ดูเหมือนจะเป็น $ 3

Wikipedia มีหน้าlaunchdที่ดีซึ่งอธิบายถึงคีย์ทั้งหมดและเครื่องมือ launchctl ที่คุณใช้เพื่อเปิดใช้งาน / ปิดใช้งาน



-1

ฉันเห็นปัญหาเดียวกันนี้ใน OSX คำตอบคือการทำงานเป็น root โดยใช้คำสั่ง sudo เช่น:

sudo crontab -e

ฉันได้รับความคิดนั้นจากGökhanBarış Aker ด้านบน


เมื่อsudoคุณจะวางงาน cron ภายใต้ผู้ใช้รูท ไฟล์ cron แตกต่างกันสำหรับผู้ใช้ปกติและรูทหนึ่ง
Timofey
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.