多年以来,当我一直在通过SSH连接工作时,我将运行sudo vi ...
以编辑配置文件。如果需要在命令行上执行某些操作,则fg
可以按Ctrl + Z挂起编辑器,执行操作,然后返回到它。
但这不再按预期工作(据我所知,截至Ubuntu 14.04)。编辑器暂停得很好,但是我第一次尝试恢复时好像没有任何反应(或者它可能会暂时恢复,然后又会暂停)。如果fg
第二次尝试,编辑器似乎会继续,但是我按的任何键只会在控制台上回显。但是,此时按Ctrl + Z确实会挂起它,并使我返回外壳。
我不知道如何重新获得对编辑器的控制权。我通常只需要按sudo kill
进程ID(它kill %1
会抛出“不允许的操作”,这是我所期望的,因为编辑器以root身份运行)。
请不要建议使用screen
和/或分开使用终端,因为我已经这样做了。我想知道是否有解决此特定问题的方法,因为按Ctrl + Z是一种根深蒂固的习惯,以至于我一直在不加思索地去做。Ubuntu最近更改了某些安全模型吗?
更新
我仍然没有弄清楚这个问题,但是我认为这与挂起嵌套进程有关。我不确定它是否特定于sudo。我一直无法可靠地复制它,但这是最常见的序列:
sudo vi
filename
- Ctrl+ Z暂停vi
vi
another-filename
- Ctrl+Z
fg 1
尝试恢复以root身份运行的vi。此时,shell会简单地说[1]+ Stopped sudo vi filename
。fg 1
再次尝试似乎可以恢复vi,但是任何击键都会简单地回显到控制台。
似乎正在发生的事情是,当我暂停时sudo vi
,sudo
和vi
进程都停止了。当我fg
第一次时,仅sudo
恢复。当我fg
第二次时,sudo
停止了,但是vi
恢复了。在正常情况下,应恢复两个过程。
type vi
给出了/usr/bin/vi
)。只需尝试:检查包装的完整性debsum vim
。