无法编辑crontab

时间:2014-02-18 09:08:33

标签: crontab archlinux

我正在尝试编辑我的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然后编辑它?

有谁在这里知道为什么?!

10 个答案:

答案 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而不是vi
export 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 -esudo -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