Lỗi khi thêm cronjobs trong Mac OS X Lion


37

Cho đến bây giờ, tôi chưa bao giờ thử thêm một crontask trên máy Mac của mình. Thật ngạc nhiên, nó đã gây ra lỗi ..

[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

Làm thế nào tôi có thể tìm ra lý do tại sao nó ném lỗi đó?

Tôi đang chạy Mac OS X Lion 10.7.2


2
Bạn đang sử dụng cron cho một lý do cụ thể? Trên hệ điều hành x, phần lớn đã được thay thế bởi launchd
Daniel Beck

Tôi muốn sử dụng vnstat để theo dõi việc sử dụng băng thông, đòi hỏi phải có một cronjob. Tôi biết tôi có thể sử dụng một ứng dụng thay thế, nhưng vẫn hữu ích khi biết cách làm cho cron hoạt động trên Mac, nếu có thể.
Hayek

1
Bạn đã thử crontab filecài đặt bảng từ một tệp bên ngoài? Hoặc sử dụng một trình soạn thảo khác nhau như EDITOR=NANO crontab -e?
Lri

@DanielBeck Tôi sử dụng cron vì thiết lập một mục mới nhanh hơn nhiều so với launchd.
Doug Harris

Không crontab -lthể hiện điều gì? Có tin nhắn nào khác trong /var/log/cron.loghoặc /var/log/system.logkhông?
Doug Harris

Câu trả lời:


41

Trong ~ / .vimrc thêm:

    autocmd filetype crontab setlocal nobackup nowritBackup

mẹo đơn giản tuyệt vời! làm việc tốt cho tôi
Tri Nguyễn

Đây là câu trả lời tốt nhất và hoạt động tốt - đơn giản hơn nhiều so với câu trả lời liên quan đến việc đặt biến env trong cấu hình shell cũng như chỉnh sửa~/.vimrc
RichVel

Đánh dấu đây là câu trả lời đúng vì câu trả lời của riêng tôi không còn phù hợp cũng không hiệu quả nhất.
Hayek

1
Điều này cũng hoạt động trong Mac OS High Sierra! Cảm ơn bạn đã đăng bài này
Kearney Taaffe

44

Vấn đề hóa ra là vivà không liên quan gì đến cron. Đã export EDITOR=vimsửa nó


2
Có tôi hiểu bạn đã tìm thấy vấn đề, và giải pháp là ... cái gì?
Gökhan Barış Aker

3
Hãy thử làm export EDITOR=vimsau đó cho nó đi.
Hayek

Cảm ơn @Hayek. Xin lỗi vì độ trễ, tôi không thể phản hồi nhanh như bạn đã làm: P. Tuy nhiên, chạy crontab với 'sudo' toàn năng đã giải quyết vấn đề của tôi.
Gökhan Barış Aker

Tôi vui vì bạn đã làm nó hoạt động.
Hayek

1
Tôi vừa có vấn đề tương tự. Cài đặt EDITOR=vimkhông khắc phục được - nó chỉ dẫn tôi đến một lỗi mới crontab: temp file must be edited in place. Tôi rất thích vim, tuy nhiên tôi thường xuyên chỉnh sửa cronjobs đến mức tôi rất vui khi thực hiện nó NANO... mặc dù nếu ai đó biết cách khắc phục, tôi rất thích thú.
ricardo

35

Về một vấn đề liên quan, nếu bạn nhận được thông báo:

crontab: temp file must be edited in place

Thử:

1) Thêm vào .bash_profile

alias crontab="VIM_CRONTAB=true crontab"

2) Thêm vào .vimrc

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

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


2
Đây là câu trả lời chính xác!!
Jacob

Điều này làm việc cho tôi và tôi cảm thấy đây nên là câu trả lời chính xác.
Shubhamoy

1
Đối với csh hoặc tcsh, sử dụngalias crontab "export VIM_CRONTAB=true; /usr/bin/crontab"
JAFaucett

1
Tôi cũng nghĩ rằng đây là một câu trả lời tốt hơn mặc dù câu hỏi từ OP không đề cập đến lỗi chính xác mà @xgMz đã mô tả. crontab dường như không thích sao lưu vim trên hành vi ghi / lưu nên việc vô hiệu hóa nó như được mô tả ở đây chỉ hoạt động.
Shyam Habarakada

Tôi chỉ gặp vấn đề này với vim và cron trên macOS Sierra. Đây là câu trả lời chính xác!
James McCormac


2

Tôi đã có cùng một vấn đề và làm theo lời khuyên được đăng để tạo bảng:

crontab file

Và điều đó đã tạo ra bảng cron, và sau đó tôi có thể chạy

crontab -e

với vi là trình soạn thảo mặc định và không có vấn đề gì. Như thể vi không thể lưu tệp, nhưng một khi được tạo, nó có thể truy cập nó. Điều này phù hợp với khả năng chạy:

sudo crontab -e 

Vì tò mò, các bảng được lưu trữ trong

/usr/lib/cron/tabs/UserName

mà chỉ có thể được đọc là sudo.


0

Cách tốt nhất để chẩn đoán điều này là tạo ra một crontab mới với một mục đơn giản như:

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

Nếu nó hoạt động thì vấn đề là với lệnh cụ thể mà bạn đã thêm. Bạn có thể chia sẻ nó với chúng tôi và cũng chia sẻ kết quả khi bạn thực hiện trực tiếp từ Terminal.app, thay vì từ crontab không?


1
Cùng một lỗi với lệnh bạn đề xuất. Trong thiết bị đầu cuối, /bin/datetrả lại Wed Nov 23 15:03:49 PST 2011như mong đợi.
Hayek

OK, chỉ cần xem câu trả lời của bạn, điều này giải thích tại sao bạn gặp phải lỗi tương tự - chỉ cần nghĩ rằng nó có thể giúp chẩn đoán vấn đề :)
tog22

0

cron không được ủng hộ trong launchd.

Lingon là một công cụ nhỏ tuyệt vời để thiết lập các tác nhân launchd; nó từng là miễn phí nhưng dường như bây giờ là 3 đô la.

Wikipedia có một trang launchd tốt mô tả tất cả các khóa và công cụ launchctl bạn sử dụng để kích hoạt / hủy kích hoạt chúng.



-1

Tôi thấy vấn đề tương tự trên OSX. Câu trả lời là chạy bằng root bằng lệnh sudo, vd:

sudo crontab -e

Tôi đã có ý tưởng đó từ Gökhan Barış Aker ở trên.


với sudobạn sẽ đặt công việc cron dưới người dùng root. Các tệp cron khác nhau cho người dùng bình thường của bạn và người dùng gốc.
Timofey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.