Иногда мой оконный менеджер X11 (i3) блокируется, и я вынужден переключиться на виртуальную консоль Linux или SSH на мою машину, чтобы восстановить контроль.
Обычно это происходит, когда у меня открыто множество окон rxvt, в каждом из которых запущена оболочка bash, содержащая десятки, если не сотни строк полезной истории командной строки, собранной за многие дни или недели.
Я использую shopt -s histappendтак, чтобы каждая оболочка bash добавляла свою историю в файл истории, когда она завершается упорядоченным образом. Обычно это работает очень хорошо и сохранит всю мою историю, если я аккуратно закрою каждую оболочку с помощью exitили CTRL-D.
Но когда мой оконный менеджер блокируется, я не могу чисто выйти из сеансов bash, потому что нет возможности взаимодействовать с ними. Поэтому я пытался найти способ _remotely_ завершить работу оболочки bash таким образом, чтобы она записывала свою историю в файл истории.
Я попытался отправить множество сигналов, в том числе SIGHUPи процессу оболочки bash, и процессу rxvt, но ни один из них не привел к сохранению истории.
Я попытался перезапустить i3, но по разным причинам это не работает (сломанный RPC сокет, кажется). Убийство оконного менеджера закрывает все окна и оболочки bash, и я теряю историю от всех них.
Я пытался найти способ ввести «CTRL-D» в каждую оболочку stdin, но, насколько я могу судить, это невозможно.
Я знаю способы заставить bash сохранять историю в файле истории после каждой команды, но я предпочитаю не использовать их, поскольку они портят индексы истории (то !nnnесть не работают, потому что nnnменяются после каждой команды).
Есть ли способ сделать это и спасти мою драгоценную историю от определенного забвения?

Большое спасибо за эту информацию.
reptyrэто именно то, что мне нужно. Раньше я все время использовалscreen, но я обнаружил, что копирование / вставка и прокрутка ведут себя как ограничитель шоу - развеtmuxсправляется с этой задачей лучше?