Как защитить от чистки истории bash?

После ответа :

При одновременном закрытии нескольких экземпляров bash существует известное состояние гонки, которое может привести к очистке истории. Это происходит из-за отсутствия блокировки, используемой при записи файла истории bash.

Как я могу предотвратить эту проблему очистки истории bash?

Я использую i3wm, и я думаю, что это происходит в основном, когда я выключаю компьютер, прежде чем вручную закрыть терминалы urxvt . Команда, используемая (через keybind) для выключения – systemctl poweroff .

One Solution collect form web for “Как защитить от чистки истории bash?”

Источником состояния гонки является то, что bash записывает только файл истории, когда оболочка завершается. Кроме того, он будет записывать существующий файл истории, если запущены несколько оболочек, только верхний для выхода будет доминировать в истории.

Поэтому одним из решений является запись истории после команды EVERY. Там или какие-то негативные последствия для этого, например, вы сможете поднимать события истории стрелок, происходящие в других окнах, и, следовательно, выставлять всем открытым оболочкам (которым вы владеете), какие команды вы только что запускали. Скорее всего, это вас укусит, если вы выполняете повторяющийся набор команд, например «стрелка вверх N раз, а затем нажмите Enter» снова и снова. Если в закрытом окне заканчивается фоновый процесс, тогда вам нужно будет уделять больше внимания тому, какая команда действительно «стрелка вверх + 1 раз», рискуя запустить неправильную команду.

Чтобы включить «историю с каждой командой», попробуйте добавить их к вам .bashrc (количество строк истории для хранения – это просто примеры, вы можете изменить их для вашего удобства)

 HISTFILESIZE=400000000 HISTSIZE=10000 PROMPT_COMMAND="history -a" export HISTSIZE PROMPT_COMMAND shopt -s histappend 
  • После отправки команды завершения сеанс ssh не завершается
  • Как запустить скрипт перед остановкой, используя заголовки LSB на Raspbian
  • Как отключить компьютер от SLiM при отключенном корневом входе?
  • Umount сетевые диски с системойd перед выключением
  • Как использовать uswsusp для режима ожидания / спящего режима с помощью systemd? (Debian)
  • Объяснение файла - org.freedesktop.login1.policy
  • «Завершение работы выполняется для LVM PV ...» при завершении работы
  • Прояснение процедуры завершения работы
  • Как выполнять скрипты в / usr / lib / systemd / system-shutdown / при перезагрузке или завершении работы?
  • Upstart: Как запустить «stop» перед остановкой других сервисов?
  • Если команда достижения таймаута выполняет другую команду
  • Linux и Unix - лучшая ОС в мире.