URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 39501
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Как хранить дату выполнения в истории команд bash"

Отправлено auto_tips , 21-Дек-07 17:48 
По умолчанию bash, а точнее утилита history, не сохраняет в .bash_history
время исполнения каждой команды.

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

Итак, пишем в ~/.bashrc строчку

   export HISTTIMEFORMAT=’%h %d %H:%M:%S ’

После этого в .bash_history перед каждой командой появится коментарий
с цифрой - временем выполнения этой команды в формате timestamp:

   #1198068550
   history
   #1198139874
   ьс
   #1198139876
   mc
   #1198148168
   ssh teletrade.ru
   #1198148217
   ssh teletrade.ru

А команда history будет выдавать историю данных с датой в формате,
который мы переменной задали (в похожем формате выдают дату и время утилита ls):

   995  Дек 19 15:49:10 history
   996  Дек 20 11:37:54 ьс
   997  Дек 20 11:37:56 mc
   998  Дек 20 13:55:49 ssh teletrade.ru

Но можно сделать и по ГОСТУ, в приятном русскому глазу виде "ДД.ММ.ГГГГ"

   export HISTTIMEFORMAT=’%d.%m.%Y %H:%M:%S ’

А можно и на американский манер "YYYY-MM-DD"

   export HISTTIMEFORMAT=’%Y-%m-%d %H:%M:%S ’

URL: http://tigro.info/blog/index.php?id=422
Обсуждается: http://www.opennet.me/tips/info/1539.shtml


Содержание

Сообщения в этом обсуждении
"Как хранить дату выполнения в истории команд bash"
Отправлено samuchif , 21-Дек-07 17:48 
> на американский манер "YYYY-MM-DD"

или "на японский", или "MM-DD-YYYY" :)


"Как хранить дату выполнения в истории команд bash"
Отправлено дима , 22-Дек-07 00:41 
спасибо,
полезно

"Как хранить дату выполнения в истории команд bash"
Отправлено FreeBSD user , 22-Дек-07 01:28 
а чем tcsh не подходит? для этого никаких лишних движений делать не надо

"Как хранить дату выполнения в истории команд bash"
Отправлено Аноним , 24-Дек-07 06:28 
А tcsh таки научился делать такое: some-command >log 2>err-log ???


"Как хранить дату выполнения в истории команд bash"
Отправлено FreeBSD User , 25-Дек-07 19:47 
>А tcsh таки научился делать такое: some-command >log 2>err-log ???

Если исходить из темы, то вот это, по-моему, вполне схойдет за решение
set history = 100
set savehist = 100

и в $HOME будет лежать файлик .history c записями вида

#+1197969179
clean
#+1197969180
l
#+1197969194
chmod 644 *.h

Это не то, что требовалось?


"Как хранить дату выполнения в истории команд bash"
Отправлено Wildchild , 22-Дек-07 02:26 
’ замените на одинарную кавычку!

"Как хранить дату выполнения в истории команд bash"
Отправлено none , 06-Янв-08 12:40 
export HISTTIMEFORMAT='%h %d %H:%M:%S ' так правильно!
Исправьте совет и не вводите читателей в заблуждение!

"Как хранить дату выполнения в истории команд bash"
Отправлено xguru , 23-Дек-07 15:10 
Еще посмотрите на lilalo
http://xgu.ru/wiki/lilalo

оно запоминает не только дату но и множество другой информации


"Как хранить дату выполнения в истории команд bash"
Отправлено PAVLINUX , 23-Дек-07 23:53 
А можно в ядре сказать  CONFIG_INPUT_EVBUG=y
и до усрачики рыть логи нажатий... (для разбора, парсер написать любой школьник сможет)...

"Как хранить дату выполнения в истории команд bash"
Отправлено FreeBSD User , 25-Дек-07 19:54 
Если исходить из темы, то вот это, по-моему, вполне схойдет за решение
set history = 100
set savehist = 100

и в $HOME будет лежать файлик .history c записями вида

#+1197969179
clean
#+1197969180
l
#+1197969194
chmod 644 *.h

Это не то, что требовалось?


"Как хранить дату выполнения в истории команд bash"
Отправлено Wildchild , 25-Дек-07 20:05 
начинается очередной писькомер =(

"Как хранить дату выполнения в истории команд bash"
Отправлено pavlinux , 28-Дек-07 02:15 
Неа, не это требовалось....


#+1197969194
chmod 644 *.h

ИЛИ

998  Дек 20 13:55:49 ssh teletrade.ru


Угадай, как понятней???  
Для доказательства удобности второго, приставим фильтр:

cat /home/vasya_pupkin/.history | grep su

На выходе будут все даты попыток запуска утильки su  

Во втором случае, самое быстрое это через egep + sed определить чтоб одна строка начиналась на #+ и следующая за ней уже на то что мы ищем, например su

И наконец, UNIX-тime это для скриптов, а не для людей.



"Как хранить дату выполнения в истории команд bash"
Отправлено Oleg , 28-Дек-07 13:52 
>Неа, не это требовалось....

Так допиши код в bash - в чем проблема?

>[оверквотинг удален]
>
>На выходе будут все даты попыток запуска утильки su
>
>Во втором случае, самое быстрое это через egep + sed определить чтоб
>одна строка начиналась на #+ и следующая за ней уже на
>то что мы ищем, например su
>
>И наконец, UNIX-тime это для скриптов, а не для людей.
>
>

а написать в три строки perl-скриптик трансляции unix-time to human-read. и наоборот - уже в лом? :)
написание оставляю в качестве домашнего задания :)
кстати, в общем случае сортировать и искать удобнее именно по unix-time. IMHO.



"ранить дату"
Отправлено Andrey Mitrofanov , 29-Дек-07 11:44 
>а написать в три строки perl-скриптик трансляции unix-time to human-read. и наоборот
>- уже в лом? :)

Да! %*)

$ date +"%Y-%m-%d %H:%M:%S" -d "@1198139874"
2007-12-20 11:37:54
abm@abm:~$ date +"%s" -d "now"
1198917759
$ _


"Как хранить дату выполнения в истории команд bash"
Отправлено stimpack , 30-Дек-07 19:51 
zsh% history -f
1250  12/30/2007 22:17  ../..
1251  12/30/2007 22:17  cryptmount -u vol06
1252  12/30/2007 22:17  uname -r
1253  12/30/2007 22:17  lll