Потеря истории Bash при использовании histappend

Мне нравится сохранять много истории, таким образом, я имею histappend набор в моем .bashrc. Большую часть времени все хорошо работает с историей, созданной от многого добавления оболочек. Однако каждый однажды и некоторое время, я запущу новую оболочку и найду, что потерял всю историю - и она часто только содержит некоторые команды от последней оболочки для выхода (т.е. она не просто перезаписывает вместо того, чтобы добавить). Из-за этого я подозрителен, что это происходит в выходе оболочки, а не от некоторого другого процесса, уничтожающего .bash_history файл. Поддерживая это заключение, у меня есть числа команды истории в моей подсказке, и я никогда не видел, что они спрыгивают.

Кто-либо когда-нибудь сталкивается с подобной проблемой? Или даже просто имеют предложения, как разыскать проблему?

18
задан 15.08.2016, 17:04

4 ответа

Никакая идея, почему это происходит, но возможно можно обойти проблему, вынудив удар записать в его файл истории каждый раз, когда это отображает подсказку:

PROMPT_COMMAND="history -a; history -n"

Это запишет (-a) и затем перечитает (-n) файл истории каждый раз подсказки удара для следующей команды. Дополнительная выгода: Вы получите команду X в оболочке 1 в истории оболочки 2.

10
ответ дан 07.12.2019, 10:27
  • 1
    Работать над ударом GNU, версией 3.00.15 (1) - выпуск (i686-redhat-linux-gnu) – David Mackintosh 11.08.2009, 15:39
  • 2
    Вы объясняете, что "не работает", означает? – innaM 11.08.2009, 16:02
  • 3
    Дополнительной выгодой, которую Вы цитируете, является во многих случаях оборотная сторона. Это не поведение, которое я ищу, поскольку я могу выполнять две абсолютно отдельных задачи в отдельных оболочках и не хочу смешивать их историю. Это ничему также, вероятно, помогает. Когда история исчезала, она удаляющая содержание .bash_history - я ожидает, что имеет значение, пи ли они в выходе оболочки или PROMPT_COMMAND. – Cascabel 12.08.2009, 01:09

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

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

3
ответ дан 07.12.2019, 10:27
  • 1
    , который я понимаю очень хорошо, как файл истории записан - это - то, почему я указал в своем вопросе, что использую histappend. Проблемой не является неожиданное содержание, но общая сумма убытков ранее сохраненного содержания. – Cascabel 12.08.2009, 01:14

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

Что-то, что смогло мешать этому происходить, должно будет продолжать сокращать файл назад к 80 строкам или однако многим командам, которыми Вы хотите, чтобы история была.

1
ответ дан 07.12.2019, 10:27
  • 1
    я имеет корневого доступа на машине, это происходящее на, но я довольно уверенный, что диск в порядке. Мой корневой каталог хранит на сервере в нашей лаборатории (много RAID, я верит), и смонтированный nfs. Что Вы подразумевает "под произвольным пределом истории оболочки"? Это все происходящее значительно ниже HISTSIZE и HISTFILESIZE, и хотя я оба устанавливает большой, они значительно ниже int удар хранит их как. – Cascabel 12.08.2009, 01:13
  • 2
    я должен был бы сказать, что запись David Mackintosh, вероятно, что происходит. – Axxmasterr 12.08.2009, 01:40
  • 3
    я совершенно уверен, что это не. Я никогда не должен заканчивать только с двумя командами в своей истории, когда последняя оболочка, которая выйдет, имела пару дюжины команд, файл истории имел несколько сотен, и HISTSIZE/HISTFILESIZE установлены на 10 000. – Cascabel 12.08.2009, 03:37

Извините, что ответил на свой собственный вопрос, но ни один из других ответов действительно не решает проблему.

Я наконец выяснил, что это только происходит при закрытии gnome-terminal самостоятельно (т.е. файл> выход, 'x' кнопка, alt+F4), и даже затем обычно только при закрытии нескольких терминалов в быстрой последовательности. Этого никогда не происходит, чтобы использование ctrl-D закрыло оболочку, позволив терминалу следовать.

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

13
ответ дан 07.12.2019, 10:27

Теги

Похожие вопросы