Где история удара хранится?

Мы решили проблему! Делая квази двоичный поиск на различиях в опциях конфигурации между "хорошими" и "плохими" ядрами, мы узнали, что проблема происходит из-за включения SLES11 ext3 запишите барьеры по умолчанию. Ядро, созданное с, списывает барьеры, по умолчанию не имел проблемы. И когда мы использовали ядро с проблемой, но помещали barrier=0 в опциях монтирования в /etc/fstab, проблема ушла.

101
19.07.2014, 01:25
5 ответов

Bash поддерживает список команд внутри памяти во время работы. Они записываются в .bash_history при выходе :

При выходе из интерактивной оболочки последние строки $ HISTSIZE копируются из списка истории в файл с именем $ HISTFILE

. хотите принудительно записать историю команд, вы можете использовать команду history -a , которая:

Добавляет новые строки истории (строки истории, введенные с начала текущего сеанса Bash) в файл истории.

Также существует опция -w :

Записать текущую историю в файл истории.

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

Если вы хотите, чтобы они всегда записывались немедленно, вы можете поместить эту команду в свою PROMPT_COMMAND переменную:

export PROMPT_COMMAND='history -a'
125
27.01.2020, 19:30

(Не ответ, но я не могу добавлять комментарии)

Если вы проверяете .bash_history , потому что вы просто хотите удалить определенную команду (например, содержащую пароль в открытом виде), вы можете напрямую удалить запись в памяти с помощью history -d .

Например, предположим, что вывод такой:

$ history
926  ll
927  cd ..
928  export --password=super_secret
929  ll

и вы хотите очистить строку export , вы можете просто добиться этого с помощью:

history -d 928
14
27.01.2020, 19:30
[

]Команды сохраняются в памяти (RAM), пока активна сессия. Как только Вы закрываете оболочку, список команд перед выключением записывается в [].bash_history[].[

] [

] Таким образом, Вы не увидите историю текущего сеанса в [].bash_history[]. [

]
5
27.01.2020, 19:30

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

Если вы настраиваете сохранение после каждой команды, то учитывайте последствия одновременного запуска нескольких bash. (командные строки будут чередоваться)

11
27.01.2020, 19:30

Во время работы история хранится только в памяти (по умолчанию )если:

  • установить -o историю (и установить Hв echo "$-").
  • HISTSIZE не равно0и
  • HISTIGNORE не является*(или каким-либо другим очень ограничительным шаблоном ).

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

История в памяти записывается на диск, если:

  • HISTFILESIZE не равен 0 и
  • HISTFILE не удален.

Но только при выходе из оболочки или при выполнении командhistory -a(append )илиhistory -w(write ).

Чтобы вызвать немедленную запись на диск, вы можете использовать переменную:

 PROMPT_COMMAND='history -a'

, который будет appendnewстрок истории в файл истории. Это строки истории, введенные с начала текущего сеанса bash, но еще не добавленные в файл истории.

Или:

 PROMPT_COMMAND='history -w'

Чтобы перезаписать историю в HISTFILE списком из памяти.

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

 $ history 5
  6359  ls
  6360  cd..
  6361  comand --private-password='^%^&$@#)!@*'
  6362  top
  6363  set +o | less
 $ history -d 6361
 $ history 5
  6359  ls
  6360  cd..
  6361  top
  6362  set +o | less
 $ history -w

И записать на диск последней командой:

 history -w    # with `shopt -u histappend` unset
7
20.08.2021, 12:48

Теги

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