В течение многих лет, когда я работал над SSH-соединением, я запускал sudo vi ...
для редактирования файла конфигурации. Если мне нужно что-то сделать в командной строке, я нажму Ctrl+Z, чтобы приостановить редактор, сделаю что-то, а затем fg
чтобы вернуться к нему.
Но это больше не работает, как ожидалось (начиная с Ubuntu 14.04, насколько я могу судить). Редактор просто приостанавливается, но в первый раз, когда я пытаюсь его возобновить, все происходит так, как будто ничего не происходит (или, возможно, он возобновляется на мгновение, но затем снова приостанавливается). Если я попробую fg
второй раз, редактор возобновит работу, но любые нажатия клавиш просто отобразятся на консоли. Но нажатие Ctrl+Z на этом этапе приостанавливает его и возвращает меня в оболочку.
Я не могу понять, как вернуть контроль над редактором. Я обычно просто sudo kill
по идентификатору процесса (kill %1
возвращает "операция не разрешена", как я и ожидал, так как редактор работает от имени пользователя root).
Пожалуйста, не предлагайте использовать screen
и / или отдельные терминалы, так как я уже делаю это. Я хотел бы знать, есть ли решение этой конкретной проблемы, так как нажатие Ctrl+Z - настолько укоренившаяся привычка, что я продолжаю делать это, не думая об этом. Ubuntu недавно изменила какую-то модель безопасности?
Обновить
Я до сих пор не понял эту проблему, но думаю, что это как-то связано с приостановкой вложенных процессов. Я не уверен, относится ли это к sudo. Я не был в состоянии воспроизвести это надежно, но это последовательность, которая вызывает это чаще всего:
sudo vi
filename
- Ctrl+ Z, чтобы приостановить vi
vi
another-filename
- Ctrl+ Z
fg 1
чтобы попытаться возобновить работу vi от имени пользователя root. На этом этапе оболочка просто скажет[1]+ Stopped sudo vi filename
. Попыткаfg 1
снова появится для возобновления vi, но любые нажатия клавиш будут просто отображаться на консоли.
Кажется, что происходит, когда я приостанавливаю sudo vi
, процессы sudo
и vi
останавливаются. Когда я fg
в первый раз, только sudo
возобновляется. Когда я fg
второй раз, sudo
останавливается, но vi
возобновляется. В обычных условиях оба процесса должны быть возобновлены.