2

В течение многих лет, когда я работал над SSH-соединением, я запускал sudo vi ... для редактирования файла конфигурации. Если мне нужно что-то сделать в командной строке, я нажму Ctrl+Z, чтобы приостановить редактор, сделаю что-то, а затем fg чтобы вернуться к нему.

Но это больше не работает, как ожидалось (начиная с Ubuntu 14.04, насколько я могу судить). Редактор просто приостанавливается, но в первый раз, когда я пытаюсь его возобновить, все происходит так, как будто ничего не происходит (или, возможно, он возобновляется на мгновение, но затем снова приостанавливается). Если я попробую fg второй раз, редактор возобновит работу, но любые нажатия клавиш просто отобразятся на консоли. Но нажатие Ctrl+Z на этом этапе приостанавливает его и возвращает меня в оболочку.

Я не могу понять, как вернуть контроль над редактором. Я обычно просто sudo kill по идентификатору процесса (kill %1 возвращает "операция не разрешена", как я и ожидал, так как редактор работает от имени пользователя root).

Пожалуйста, не предлагайте использовать screen и / или отдельные терминалы, так как я уже делаю это. Я хотел бы знать, есть ли решение этой конкретной проблемы, так как нажатие Ctrl+Z - настолько укоренившаяся привычка, что я продолжаю делать это, не думая об этом. Ubuntu недавно изменила какую-то модель безопасности?

Обновить

Я до сих пор не понял эту проблему, но думаю, что это как-то связано с приостановкой вложенных процессов. Я не уверен, относится ли это к sudo. Я не был в состоянии воспроизвести это надежно, но это последовательность, которая вызывает это чаще всего:

  1. sudo vi filename
  2. Ctrl+ Z, чтобы приостановить vi
  3. vi another-filename
  4. Ctrl+ Z
  5. fg 1 чтобы попытаться возобновить работу vi от имени пользователя root. На этом этапе оболочка просто скажет [1]+ Stopped sudo vi filename . Попытка fg 1 снова появится для возобновления vi, но любые нажатия клавиш будут просто отображаться на консоли.

Кажется, что происходит, когда я приостанавливаю sudo vi , процессы sudo и vi останавливаются. Когда я fg в первый раз, только sudo возобновляется. Когда я fg второй раз, sudo останавливается, но vi возобновляется. В обычных условиях оба процесса должны быть возобновлены.

0