在Mac OS X Lion中添加cronjobs时出错


37

到目前为止,我从未尝试在Mac上添加crontask。令我惊讶的是,它抛出了一个错误。

[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上,它已基本被发布
Daniel Beck

我想使用vnstat跟踪带宽使用情况,这需要cronjob。我知道我可以使用其他应用程序,但是,如果有可能的话,知道如何使cron在Mac上运行仍然很有用。
哈耶克

1
您是否尝试crontab file从外部文件安装表?还是使用其他类似的编辑器EDITOR=NANO crontab -e
Lri

@DanielBeck我使用cron,是因为它比创建新条目要快得多。
Doug Harris

是什么crontab -l节目?/var/log/cron.log或中还有其他消息/var/log/system.log吗?
Doug Harris

Answers:


41

在〜/ .vimrc中添加:

    autocmd文件类型crontab setlocal nobackup nowritebackup

简单绝招!对我来说效果很好。
Tri Nguyen

这是最好的答案,并且效果很好-比涉及在shell配置文件中设置env变量以及进行编辑的方法简单得多~/.vimrc
-RichVel

将此标记为正确答案,因为我自己的答复不再合适也不是最有效的。
哈耶克

1
这也适用于Mac OS High Sierra!感谢您发布此信息
Kearney Taaffe

44

事实证明,这个问题vi与cron无关。做export EDITOR=vim固定它


2
是的,我了解您发现了问题,解决方案是...什么?
格克汗阿克尔巴里斯

3
尝试export EDITOR=vim然后尝试一下。
哈耶克

谢谢@Hayek。很抱歉延迟,我无法像您那样迅速回复:P。但是,用全能的“ sudo”运行crontab解决了我的问题。
格克汗阿克尔巴里斯

真高兴你做到了。
哈耶克

1
我刚遇到同样的问题。设置EDITOR=vim并不能解决问题-只是导致我遇到了一个新错误crontab: temp file must be edited in place。我更喜欢vim,但是我很少编辑cronjobs,以至于我很高兴在其中做它,NANO尽管如果有人知道此修复程序,我会很感兴趣。
里卡多

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
这是正确的答案!
2014年

这对我有用,我认为这应该是正确的答案。
Shubhamoy

1
对于csh或tcsh,用alias crontab "export VIM_CRONTAB=true; /usr/bin/crontab"
JAFaucett

1
我也认为这是一个更好的答案,尽管OP中的问题并未提及所描述的确切错误@xgMz。crontab在写入/保存行为上似乎不喜欢vim备份,因此按此处所述禁用它就可以了。
Shyam Habarakada

我刚刚在macOS Sierra上的vim和cron遇到了这个问题。这是正确的答案!
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
哈耶克

OK,刚刚看到您的答案,这说明了为什么会出现相同的错误-只是认为这可能有助于诊断问题:)
tog22 2011年

0

不赞成使用cron,而建议采用launchd。

Lingon是设置启动代理的好工具。它曾经是免费的,但现在看来是3美元。

Wikipedia的启动页面很好,描述了所有键以及用于激活/停用它们的launchctl工具。



-1

我在OSX上看到了同样的问题。答案是使用sudo命令以root身份运行,例如:

sudo crontab -e

我是从上面的GökhanBarışAker那里得到这个想法的。


sudo您将cron作业放在root用户下。对于您的普通用户和root用户,cron文件是不同的。
Timofey 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.