Как правильно настроить журнал истории?

В обычном пользовательском .bashrc (debian8) есть две строки.

cat /home/debian8/.bashrc

export HISTTIMEFORMAT="%F %T   `tty` "
export PROMPT_COMMAND="history -w"

При первом входе в систему с пользователем debian8 и вводе tty pwd , чтобы не закрывать его. enter image description here

При втором входе в систему с пользователем debian8 и вводе tty ls . enter image description here

Теперь перезагрузим компьютер и получим информацию журнала с помощью команды history.
Я получаю следующее:

debian8@hwy:~$ history
    1  2017-03-02 22:48:25   /dev/pts/0 tty
    2  2017-03-02 22:48:28   /dev/pts/0 pwd
    3  2017-03-02 22:48:38   /dev/pts/0 tty
    4  2017-03-02 22:48:40   /dev/pts/0 ls
    5  2017-03-02 22:48:38   /dev/pts/0 tty
    6  2017-03-02 22:48:40   /dev/pts/0 ls
    7  2017-03-02 22:48:25   /dev/pts/0 tty
    8  2017-03-02 22:48:28   /dev/pts/0 pwd
    9  2017-03-02 22:48:55   /dev/pts/0 history

Почему не могу получить следующую информацию? Как получить следующую информацию журнала?

debian8@hwy:~$ history
    1  2017-03-02 22:48:25   /dev/pts/0 tty
    2  2017-03-02 22:48:28   /dev/pts/0 pwd
    3  2017-03-02 22:48:38   /dev/pts/1 tty
    4  2017-03-02 22:48:40   /dev/pts/1 ls
    5  2017-03-02 22:48:55   /dev/pts/0 history

Чтобы заменить

export HISTTIMEFORMAT="%F %T   `tty` "
export PROMPT_COMMAND="history -w"

на

export HISTTIMEFORMAT="%F %T   `tty` "
export PROMPT_COMMAND="history -a"

, а не '% F% T tty ' .

Я получаю

debian8@hwy:~$ history
    1  2017-03-02 22:48:25   /dev/pts/0 tty
    2  2017-03-02 22:48:28   /dev/pts/0 pwd
    3  2017-03-02 22:48:38   /dev/pts/0 tty
    4  2017-03-02 22:48:40   /dev/pts/0 ls
    5  2017-03-02 22:48:55   /dev/pts/0 history

Нет возможности получить такую ​​информацию, как следующая?

debian8@hwy:~$ history
    1  2017-03-02 22:48:25   /dev/pts/0 tty
    2  2017-03-02 22:48:28   /dev/pts/0 pwd
    3  2017-03-02 22:48:38   /dev/pts/1 tty
    4  2017-03-02 22:48:40   /dev/pts/1 ls
    5  2017-03-02 22:48:55   /dev/pts/0 history

0
02.03.2017, 16:56
1 ответ

Мое решение - это фактическое обходное решение путем установки PROMPT_COMMAND переменной окружения в ~/.bash_profile или в ~/.bashrc, которая создает дополнительный журнал.

Файл ~/.bash_history хранит только временную метку и команду, подобную этой:

#1488631365
ls -lah
#1488631367
history
#1488631380
cat ~/.bash_history

переменная окружения HISTTIMEFORMAT - это только установка того, как #1488631380 должно быть переведено/отображено.


Ниже будет создан сегодняшний лог-файл - ~/bash-history-2017-03-04.log

export PROMPT_COMMAND='echo -e "$(tty)\t$(history 1)" >> ~/bash-history-$(date "+%Y-%m-%d").log' 

пример вывода (в зависимости от того, как настроен HISTTIMEFORMAT)

/dev/pts/1        541  [04/03 14:02:37] tty
/dev/pts/1        542  [04/03 14:02:45] echo "hi from tty1"
/dev/pts/0        523  [04/03 13:55:07] cat ~/.bash_history
/dev/pts/0        524  [04/03 14:02:53] tty
/dev/pts/0        525  [04/03 14:02:58] echo "hi from tty 0"
0
28.01.2020, 04:48

Теги

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