我想在Mac上使用cron。我选择它launchd
是因为我也希望能够在Linux上使用我的新知识。但是,我似乎无法使crontab -e
命令正常工作。它启动了vim,我进入测试工作:
0-59 * * * * mollerhoj3 echo "Hello World"
但是保存并退出(:wq
)后,
crontab -l
说:
No crontab for mollerhoj3
我究竟做错了什么?
我想在Mac上使用cron。我选择它launchd
是因为我也希望能够在Linux上使用我的新知识。但是,我似乎无法使crontab -e
命令正常工作。它启动了vim,我进入测试工作:
0-59 * * * * mollerhoj3 echo "Hello World"
但是保存并退出(:wq
)后,
crontab -l
说:
No crontab for mollerhoj3
我究竟做错了什么?
crontab: no crontab for mollerhoj3
和DYLD_消息
:set backupcopy=yes
。由于这个原因,我的MacVim无法与crontab配合使用,但是由于crontab保存后抱怨,我看到了它crontab: temp file must be edited in place
。
Answers:
只需按照以下步骤操作:
crontab -e
。键入您的cron作业,例如:
30 * * * * /usr/bin/curl --silent --compressed http://example.com/crawlink.php
按Esc退出vim的插入模式。
crontab: installing new crontab
。您可以使用验证crontab文件crontab -l
。但是请注意,根据~/.vimrc
文件的内容,这可能不起作用。
export EDITOR=nano
:x
,减少字符数:)
我从来没有遇到过这个问题,但是我创建了〜/ .crontab文件并对其进行编辑(这使我可以使用Time Machine或其他方式对其进行备份),然后运行
crontab ~/.crontab
已经为我工作了20多年,涉及多种Unix版本。
crontab ~/.crontab
只需将指令安装在文件中。可以将其命名为任何名称,并且可以“运行”,但crontab -e
永远不会编辑~/.crontab
或选择任何文件。阅读man crontab
。您甚至可以删除,~/crontab
并且您的任务清单也可以正常运行。
注意:在我的Mavericks系统上,说使用ZZ
命令的答案对我不起作用,但这可能是由于我的vim配置中有问题,因为如果我以原始方式开头.vimrc
,那么可接受的答案就可以了。如果其他解决方案不起作用,我的答案可能对您有用。
在MacOS X上,根据crontab联机帮助页,使用创建的crontab临时文件crontab -e
需要就地进行编辑。Vim默认情况下不进行就地编辑(但可能会做一些特殊情况来支持crontab -e
),因此,如果您的$EDITOR
环境变量设置为vi
(默认值)或vim
,则编辑crontab总是会失败。
要使Vim就地编辑文件,您需要执行以下操作:
:setlocal nowritebackup
这样可以使您在crontab -e
使用:wq
orZZ
命令时更新crontab 。
您可以在.vimrc中添加自动命令,以使其在编辑crontabs时自动运行:
autocmd FileType crontab setlocal nowritebackup
另一种方法是将添加setlocal nowritebackup
到~/.vim/after/ftplugin/crontab.vim
,如果启用了Filetype插件,则在编辑crontab文件时Vim将自动加载。如果您正在多个平台上使用vim文件,也可以检查操作系统:
""In ~/.vim/after/ftplugin/crontab.vim
if has("mac")
setlocal nowritebackup
endif
crontab: "/usr/bin/vi" exited with status 1
vi
来修复它vim
。我一直以为两者都是一样的。
不建议在OS X上使用cron。 launchd
改为使用。尝试man launchctl
开始。您必须创建用于定义作业的特殊XML文件,并将其放置在具有特定权限的特殊位置。
您通常只需要弄清楚 launchctl load
http://nb.nathanamy.org/2012/07/schedule-jobs-using-launchd/
编辑
如果您确实想在OS X上使用cron,请查看以下答案:https : //superuser.com/a/243944/2449
我做了两件事来解决这个问题。
EDITOR=emacs crontab -e
我不知道为什么vim无法正常工作)crontab -l
现在打印cronjobs。现在我只需要弄清楚为什么cronjobs仍然没有运行;-)
crontab -e
,这很容易知道
crontab: installing new crontab
消息),但是作业没有运行。sudo touch /etc/crontab
在小牛上为我工作..
如前所述,不建议使用cron(但受支持),建议在OS X中启动cron。
如果系统关闭或处于睡眠状态,则cron作业不会执行;在下一个指定时间发生之前,它们不会运行。
如果通过设置StartCalendarInterval键安排启动的作业,并且本应运行该作业的计算机处于睡眠状态,则该作业将在计算机唤醒时运行。但是,如果在应运行该作业的情况下关闭了机器,则该作业要等到下一个指定时间出现后才能执行。
关闭计算机或使其进入睡眠状态时,将跳过所有其他已启动的作业。在下一个指定时间发生之前,它们不会运行。
因此,如果计算机始终在作业的预定时间关闭,则cron作业和启动的作业都将永远不会运行。例如,如果您总是在晚上关闭计算机,则计划在凌晨1点运行的作业将永远不会运行。
该错误crontab: temp file must be edited in place
是由于vim处理备份文件的方式引起的。
要将vim与cron一起使用,请在.bash_profile中添加以下行
export EDITOR=vim
alias crontab="VIM_CRONTAB=true crontab"
源文件:
source .bash_profile
然后在您的.vimrc中添加:
if $VIM_CRONTAB == "true"
set nobackup
set nowritebackup
endif
将vim与cron一起使用时,这将禁用备份。您将能够使用crontab -e
添加/编辑cronjobs。
成功保存您的cronjob后,您将看到以下消息:
crontab: installing new crontab
来源:
http : //drawohara.com/post/6344279/crontab-temp-file-must-be-edited-in-place在这里输入链接描述
以上混合了正确答案。对于我来说具有完全相同的错误的原因是:
1)编辑您的bash配置文件
$ cd〜&& vim .bashrc
2)在您的bash配置文件中,确保默认编辑器是vim而不是vi(这会导致问题)
导出EDITOR = vim
3)编辑您的vim配置文件
$ cd〜&& vim .vimrc
4)确保.vimrc中的set backupcopy是yes
设置backupcopy = yes
5)重启终端
6)现在尝试crontab编辑
$ crontab -e
10 * * * *回声“你好世界”
您应该看到它正确创建了crontab文件。如果退出vim(ZZ或:wq)并使用以下命令列出crontab;您应该看到新的cron作业。希望这可以帮助。
$ crontab -l
crontab: installing new crontab
到终端?