无法退出 crontab 命令

无法退出 crontab 命令

我正在使用全新安装的 Ubuntu 16.04 LTS。
每当我输入:

sudo crontab -e

或者

sudo -u www-data crontab -e

该命令打印一些数字,但不打印任何其他内容。无论你以何种方式试图摆脱它,你都无法做到。

问题

  • 首先,如何退出上述命令?我只是被困住了。
  • 为什么该命令不显示 crontab 条目?
  • 如何使上述命令显示 crontab 条目?

编辑
我选择了 vim.basic 编辑器:

sudo update-alternatives --config editor

但是当我echo $EDITOR打印空的时候。

另外,
crontab -e-> 工作正常
sudo -u www-data crontab -e-> 如上所述卡住

答案1

我猜你的默认编辑器未设置并且默认为ed.

如果你运行你会得到什么:

env | egrep 'EDITOR|VISUAL'

sudo env | egrep 'EDITOR|VISUAL'

sudo -u www-data env | egrep 'EDITOR|VISUAL'

退出的方法ed是输入:q↵ Return

要设置不同的编辑器,您可以执行以下操作:

sudo -u www-data EDITOR=$EDITOR crontab -e

答案2

首先,如何退出上述命令?我只是被困住了。

我们不知道您使用的是什么编辑器。尝试Esc :q(vim) 或Ctrl-x(nano) 或Ctrl-x Ctrl-c(emacs) 或q( ed)。

  • 运行命令select-editor并选择您要使用的编辑器
  • 替代方案:设置环境变量EDITORVISUAL您喜欢的编辑器。
    示例:export EDITOR=emacs使用 emacs 或export EDITOR=nanonano。
  • 然后,运行crontab -e编辑你的 crontab
  • 用于crontab -l显示 crontab 的内容

答案3

我已经应用了以下命令

# Interactive way
update-alternatives --config editor
# And choose 3 (vim.basic)

# Non Interactive way
sudo update-alternatives --set editor /usr/bin/vim.basic

# Verify as
sudo update-alternatives --query editor

或者,您可以将其添加到~/.bashrc~/.bash_profile归档并重新加载以反映更改。

export VISUAL=vim
export EDITOR="$VISUAL"

对于www-data用户的 crontab,我使用为:

sudo crontab -u www-data -e

这解决了这个问题。

答案4

不要使用 crontab -e

  • 除非您确切地知道您的系统、帐户和会话是如何配置的,否则您不知道接下来会发生什么。
  • 改变其中任何一项,就会发生不同的事情
  • 即使它确实在您可以操作的编辑器中打开您的 crontab,放弃更改也可能很棘手

相反,将 crontab 写入临时文件,使用您选择的编辑器,将文件导入回 cron:

$ crontab -l >mycron
$ vi mycron
$ crontab <mycron

(我还强烈建议不要以 www-data 用户身份运行 cron 作业)

相关内容