Что могло заставить мою историю удара быть неожиданно очищенной?

Используйте эту команду и перечислите выполнение mysql приложения,

ps -aux | grep 'mysql'

затем, запустите свой необходимый mysql в его порте по умолчанию "3306"

16
31.08.2013, 00:45
2 ответа

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

Chet Ramey (текущий специалист по обслуживанию удара) дал хорошую сводку условий для этой проблемы:

Ток (bash-4.3-devel) кодирует работы что-то вроде этого, не принимая ошибок (lib/readline/histfile.c:history_do_write ()):

  • переименуйте (histfile, histfile ~)
  • открытый файл с O_CREAT|O_TRUNC
  • malloc буферизуют достаточно большой для содержания всех ретроспективных данных
  • запишите все записи истории в одной записи (2) вызов
  • близкий файл
  • удалите связь (histfile ~)

Удар 4,2 работы кода тот же путь за исключением того, что это не создает резервную копию файла истории. Каждая оболочка делает то же самое, когда это выходит, принятие histappend не установлено, как в Вашей конфигурации.

Существует несколько способов, которыми файл истории может закончиться нулевая длина: malloc может перестать работать, или запись может перестать работать. В ударе 4.2, слишком поздно, чтобы сделать что-либо об усеченном файле истории в той точке. В ударе 4.3, будет восстановлен предыдущий файл истории.

Этот поток списка рассылки от удара ошибки содержит достойное обсуждение проблем, возможных решений и проблем, окружающих это.

Существуют также некоторые другие возможности:

  • В какой-то момент, Ваш HISTSIZE или HISTFILESIZE был установлен на 0
  • В какой-то момент, Ваш readline history-size был установлен на 0
  • Кто-то, или намеренно или неумышленно, вытер историю удара (через > "$HISTFILE" или подобный)

В последнем случае Вы могли бы хотеть проверить, что кто-то не получал доступ к Вашей учетной записи и пытается скрыть их дорожки сырым способом. Смотрите на last, /var/log/auth (или /var/log/secure на CentOS/RHEL), и если у Вас есть он, какой-либо процесс бухгалтерское и/или контролирующее программное обеспечение, Вы, возможно, установили.

17
27.01.2020, 19:48

Как я случайно удалил историю bash:

Я запускал собственный альтернативный скрипт readline для терминала из первых принципов:https://tiswww.cwru.edu/php/chet/readline/rluserman.html

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

Восстановление истории, если она осталась в памяти:

Если вы поймаете это до перезагрузки или если терминал остался открытым до очистки, вы сможете найти свою историю в памяти. Запустите history | cut -c 8- > histback_user1.txtна всех терминалах, оставленных открытыми, и для каждого пользователя. Если это создает файл с вашей расширенной историей, вы можете заменить ~/.bash_historyна histback_user1.txt. Также проверьте историю всех пользователей, недавно вошедших в систему, а также историю root. Во многих случаях легко случайно очистить историю bash, поэтому, если вы хотите быть уверенным в том, что история не будет потеряна, вам нужен сценарий ежедневного резервного копирования.

1
27.01.2020, 19:48

Теги

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