习惯了在 linux 中使用 crontab 来设置定时任务,于是,想在 macOS 中也用它来做同样的事情。
但是,在 macOS 中却遇到了以下错误:
$ crontab -e
crontab: no crontab for floodliu - using an empty one
crontab: "/usr/bin/vi" exited with status 1
因为我之前用 brew 安装过 vim,因此 /usr/bin/vi
被链接到了 vim
:
$ ll /usr/bin/vi
lrwxr-xr-x 1 root wheel 3 9 21 21:47 /usr/bin/vi -> vim
因此,该问题可以设置 EDITOR=vim
来解决:
$ export EDITOR=vim
$ crontab -e
如果不希望每次使用 crontab -e
前都要这样设置,可以把 export EDITOR=vim
写到shell的启动配置文件中。
- 对于bash,该文件是
~/.bashrc
- 对于zsh,该文件是
~/.zshrc
但是,设置了 EDITOR=vim
之后,再次使用 crontab -e
命令,又报错如下:
$ crontab -e
crontab: no crontab for floodliu - using an empty one
crontab: temp file must be edited in place
该问题可以修改vim配置文件来解决。在 ~/.vimrc
中添加以下内容:
autocmd filetype crontab set nobackup nowritebackup
至此,就可以正常使用crontab
了。
- 查看crontab命令的用法:
$ man crontab
- 查看crontab定时任务的格式:
$ man 5 crontab