我正在尝试编辑我的crontab,但我无法打开它!
因此,对于我的用户foo,我只需输入:
crontab -e
然后我得到了:
no crontab for foo - using an empty one
nano: No such file or directory
crontab: "nano" exited with status 1
所以我先试了一下:
export EDITOR=nano
我重试了,得到了完全相同的输出。我还尝试将我的编辑器设置为vim with
export EDITOR=vim
no crontab for foo - using an empty one
vim: No such file or directory
crontab: "vim" exited with status 1
但是我一次又一次地保持同样的出口。我怎么能打开我的crontab然后编辑它?
有谁在这里知道为什么?!
答案 0 :(得分:5)
此消息是正常的,因为您仍然没有该用户的任何crontab:
没有用于foo的crontab - 使用空的
关于以下内容:
nano / vim:没有这样的文件或目录
crontab:“nano”以状态1退出
这种情况正在发生,因为您没有正确定义编辑器。为此,您必须指定二进制文件的完整路径:
export EDITOR=/usr/bin/nano
或
export EDITOR=/usr/bin/vi
答案 1 :(得分:3)
我在新的ec2实例上遇到完全相同的错误。
no crontab for ec2-user - using an empty one
/bin/sh: /usr/bin/vi: No such file or directory
crontab: "/usr/bin/vi" exited with status 127
当你打开它时,VIM工作正常,但是crontab -e仍然没有工作。然后我尝试了解决方案:
export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
export EDITOR=/usr/bin/vi
哪个不起作用,然后输入:
which vi
alias vi='vim'
/usr/bin/vim
我的诀窍是在导出
上使用vim而不是viexport EDITOR=/usr/bin/vim
现在我的crontab -e正常工作
答案 2 :(得分:1)
如上所述,您可能已将nano安装在其他位置,或者位于PATH变量中的位置。作为替代方案,您可以尝试which pico
,如果“pico”显示该命令,请按照export EDITOR=pico
,然后crontab -e
的步骤操作。
请记住在shell的启动脚本中包含导出行,否则输入的命令行EDITOR值将在您离开终端会话时消失。
答案 3 :(得分:0)
我无法找到解决问题的方法,但我必须能够执行一些crons。所以在谷歌搜索之后,我发现cronie并不是唯一存在的cron经理。 fcron是我的解决方案。所以我做了:
pacman -R cronie
pacman -S fcron
然后只需输入crontab -e
而不是fcrontab -e
,编辑您的文件即可。对我来说就像魅力一样。希望这能帮助人们......
答案 4 :(得分:0)
要使 Sublime 成为我的默认编辑器,我在.bashrc
开始使用此行:
# In .bashrc
export EDITOR="subl -w"
结果:
> source ~/.bashrc
> crontab -e
crontab: subl -w: No such file or directory
crontab: "subl -w" exited with status 1
我尝试完全限定软链接的路径:
> which subl
/usr/local/bin/subl
> ls -la /usr/local/bin/subl
... /usr/local/bin/subl -> /Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl
# In .bashrc
export EDITOR="/usr/local/bin/subl -w"
结果:
> source ~/.bashrc
> crontab -e
crontab: /usr/local/bin/subl -w: No such file or directory
crontab: "/usr/local/bin/subl -w" exited with status 1
最后我删除了-w
:
# In .bashrc
export EDITOR="/usr/local/bin/subl"
哪个有效:
> source ~/.bashrc
> crontab -e
# opened Sublime
我能够使用相同的步骤使nano
工作。
答案 5 :(得分:0)
解决方案未安装“其他编辑器”
解决方案是知道问题并解决。
这是您的终端应用与其远程外壳配置之间的问题。
解决方案
export TERM=xterm
crontab -e
您可以在您的shell配置文件中添加.bashrc,.zshrc ....
答案 6 :(得分:0)
从根本上讲,使用sudo时,这些解决方案都无法在现代Arch Linux上使用。
sudo crontab -e # didn't work
/bin/sh: /usr/bin/vi: No such file or directory
crontab: "/usr/bin/vi" exited with status 127
sudo -s
crontab -e # same error
su -
crontab -e # Same issue!!!
ssh root@localhost # same thing :O
即使以root身份从CLI(CTRL + ALT + F2)登录也不起作用...
所以我开始怀疑它刚刚坏了。
好吧,我通过添加
解决了ssh root@
和bash
中的zsh
和CLI问题
EDITOR=/usr/bin/vim
到/etc/profile
的最底端。
我一直四处张望,我发现了一个使所有人都困惑的秘密,尤其是@Hito !!
sudo visudo
并添加以下内容:
Defaults env_keep += "EDITOR"
现在,一切都将正常进行!! sudo crontab -e
,sudo -s; crontab -e
等。我敢打赌它也可以解决其他应用程序的问题!
答案 7 :(得分:0)
使用 env
程序将环境变量传递给 crontab。
sudo env EDITOR=nano crontab -e
它也可以在没有 sudo
的情况下工作。
我还没有找到永久执行此操作的方法,但此方法有效。
答案 8 :(得分:-1)
假设仍然有人遇到此问题,我的解决方案是使用.xprofile
中首选文本编辑器的绝对路径导出。
export EDITOR=/usr/bin/vim
然后我使用
将其来源到我的.bashrc
中
[[ -f .xprofile ]] && . .xprofile
这将使环境变量在每个Shell会话中持续存在。
在我的情况下,我使用的是cronie,默认情况下它将查找/usr/bin/vi
并生成
no crontab for user - using an empty one
/bin/sh: /usr/bin/vi: No such file or directory
crontab: "/usr/bin/vi" exited with status 127
直到设置了$EDITOR
环境变量。
答案 9 :(得分:-1)
对我来说,问题是没有安装/usr/bin/vi
。我安装了
apt install vim-tiny
然后我可以使用
访问编辑器crontab -e