LINUX.ORG.RU
ФорумAdmin

[bash logging] Как правильно настроить логированние на сервере, чтобы при параллельных сессиях история сохранялась?


0

4

Часто открываю от одного юзера (и на своих серверах и на рабочих станциях) много консолей, но bash всегда сохраняет только историю той консоли, из которой я вышел в последнюю очередь. Хочется, чтобы все консоли синхронизировали историю.

О, тоже интересует данный вопрос.

JackYF ★★★★
()

Сохраняются все истории. Откуда инфа, что только последний баш?

sdio ★★★★★
()

zsh
setopt SHARE_HISTORY

ах,да: баш не нужен

zolden ★★★★★
()

Мигрируйте на zsh, там это превосходно осуществляется.

blackst0ne ★★★★★
()

oh-my-zsh это из коробки делает.

tazhate ★★★★★
()
Ответ на: комментарий от YAR

shopt -s histappend
PROMPT_COMMAND=«while true; do if [ ! -e ~/.bash_hlock ]; then touch ~/.bash_hlock; history -a; history -n; rm ~/.bash_hlock; break; fi; sleep 1; done»

ня :3

ktulhu666 ☆☆☆
() автор топика

Чуть не забыл: класть в ~/.bashrc :3

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от YAR

Вот так правильнее:
shopt -s histappend
PROMPT_COMMAND=«while true; do if [ ! -e ~/.bash_hlock ]; then touch ~/.bash_hlock;history -a ; history -c; history -r; rm ~/.bash_hlock; break; fi; sleep 1; done»

После этого лучше сделать /usr/local/bin/hist (нужно для подгрузки самой последней истории, либо можно нажимать на enter перед history, но уж лучше сокращенную команду юзать):
#!/bin/bash
history -r ~/.bash_history && history

Всё. Безопасно и удобно.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от blackst0ne

blackst0ne

Что здесь небезопасного?

ну вообще это конечно надо посмотреть, как оно там будет хранится. В любом случае очевидно, что защитить Over9000 файлов будет сложнее, чем один. (это ведь при каждом входе будет создаваться новая история, я правильно понимаю?)

drBatty ★★
()
Ответ на: комментарий от drBatty

drBatty

ну вообще это конечно надо посмотреть, как оно там будет хранится. В любом случае очевидно, что защитить Over9000 файлов будет сложнее, чем один. (это ведь при каждом входе будет создаваться новая история, я правильно понимаю?)


Про какие файлы вообще идёт речь? Я не уловил нить.
В zsh история пишется в один файл со всех сессий - ~/.zhistory.

blackst0ne ★★★★★
()
Ответ на: комментарий от blackst0ne

blackst0ne

В zsh история пишется в один файл со всех сессий - ~/.zhistory.

а... тогда понятно. И в этом файле действия всех юзеров вперемешку?

drBatty ★★
()
Ответ на: комментарий от drBatty

drBatty

угу. если вошло 10 рутов, то будет один файл, где все действия этих рутов вперемешку.


Естественно. Это же один пользователь.
Впрочем, это всё настраивается.

blackst0ne ★★★★★
()
Ответ на: комментарий от drBatty

В zsh всё также, как в моём костыле (разве что блокировка другая). В баше можно сделать file-per-bash_process (думаю, если Вы измените пару строчек в скрипте, то и file-per-terminal можно сделать), если Вам сильно надо (мне,например, не надо, и было бы неудобно): http://nodsw.com/blog/leeland/2011/10/26-all-bash-history-forever-and-across-...

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от YAR

Да, если вариант в /usr/local не катит, то в .bashrc дописать строчку
alias hist=«bash -c 'history -r ~/.bash_history && history'»

ktulhu666 ☆☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.