Однажды я использовал emacsclient качестве редактора из командной строки, но меня беспокоило, что он будет висеть в окне терминала, пока я работаю в emacs .
Я попытался справиться с процессом, запустив emacsclient somefile.txt & но это привело к большому количеству "сломанных каналов". Я не знал, что это было, но мои файлы были повреждены. Я научился справляться с проблемой.

Недавно я также начал использовать latexmk для составления исследовательских работ. Я попробовал latexmk -pvc & чтобы запустить процесс непрерывной компиляции в фоновом режиме, но снова столкнулся с проблемой "сломанных каналов".

Хотя я обычно нахожусь в терминале с вкладками и могу работать с занятым окном, открывая новое, мне действительно нравится иметь полную историю команд. Поскольку большинство команд вводятся в первое окно терминала, оно имеет лучшую историю.

Но я продолжаю работать удаленно на машинах без эмуляторов экрана. Есть ли запеченный способ многозадачности в одном терминальном окне?

1 ответ1

2

Насколько я знаю, единственная причина, по которой вы получили бы сломанный канал с фоновым процессом, - это если вы закроете окно терминала, которое его запустило. Несмотря на то, что он находится в фоновом режиме, он все еще подключен к вашему терминалу по каналам к stdin и stdout. Если вы закроете, выйдете из системы или выйдете из терминала, каналы процесса прервутся, и процесс получит сигнал на завершение (думаю, SIGHUP).

Решением этого, вероятно, будет использование nohup . nohup перенаправляет stdin, stdout и stderr нового фонового процесса в файлы и предотвращает отправку процесса SIGHUP.

Чтобы использовать его, вы можете запустить nohup emacsclient somefile.txt & или, если вы хотите избежать файлов nohup.out и nohup.err, которые он использует для захвата stdout и stderr, вы можете полностью избавиться от вывода с помощью nohup emacsclient somefile.txt &> /dev/null & .

Так как вводить текст для редактирования файла становится немного громоздким, вы, вероятно, захотите вставить это в псевдоним или сценарий оболочки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .