Bash Historie

Started by bluelupo, 2014/12/29, 10:47:53

Previous topic - Next topic

bluelupo

Hallo zusammen,

ich habe hier aktuell an meinem PC mit der Bash Historie ein Problem das die Datei /root/.bash_history immer wieder gekürzt wird, obwohl ich das völlig anders konfiguriert habe.

Auszug aus der .bashrc von root:

HISTCONTROL=''
HISTTIMEFORMAT='[%F %T] '
export HISTCONTROL
export HISTTIMEFORMAT

export HISTSIZE=100000
export HISTFILESIZE=100000


Erreichen will ich das Bash Historie 100.000 Zeilen lang werden kann bevor sie gekürzt wird. Allerdings wird die Historie bei knapp 27.000 Einträgen schon gekürzt. Was läuft hier schief?

Vor der letzten Kürzung war sie ca. 344K groß.

-rw------- 2 root root 344K Dez 27 19:05 ./daily.0/polarfox/root/.bash_history


Gibt es noch eine Stelle wo man das konfigurieren kann?

OppaErich

Hallo nach Bayern,


hast Du eine inputrc ? Schau' mal da rein.

bluelupo

Quote from: OppaErich on 2014/12/29, 12:06:11
Hallo nach Bayern,


hast Du eine inputrc ? Schau' mal da rein.
@OppaErich: nein, da steht nichts dazu drinnen (/etc/inputrc).

OppaErich

Hmm, das war jetzt alles was ich auf die Schnelle gefunden hatte. Steht in irgendeinem anderen rc-file nochmal was von HISTSIZE ? Vielleicht wird Deine Einstellung von einer weiteren Datei wieder überschrieben...

michaa7

#4
wie schaut es aus mit

.bashrc

.profile

?

Fragen:
Warum 100000 zeilen lang? Das ist doch irrsinniger ballast.
Hast du irgendeine function laufen, die doppelte einträge löscht?

Quote
down vote   
(re-posted from http://stackoverflow.com/a/19533853/128597)

After many large, ugly iterations and weird edge cases over the years, I now have a concise section of my .bashrc dedicated to this.

First, you must comment out or remove this section of your .bashrc (default for Ubuntu). If you don't, then certain environments (like running screen sessions) will still truncate your history:
Quelle: http://superuser.com/questions/137438/how-to-unlimited-bash-shell-history , hier wird auch klar, dass die 27000 zeilen wohl irgendwo festgelegt sind, denn auch dieser user hat den cut bei dieser länge.
Ok, you can't code, but you still might be able to write a bug report for Debian's sake

bluelupo

Hi michaaa7,
bezüglich HIST-Variablen steht nur in der .bashrc etwas (wie oben angegeben). Ich würde einfach gerne eine laufende Historie all meiner eingegebenen Befehle auf der Kommandozeile haben. Die paar MByte Speicherplatz sind mir egal. Wenn bei 27000 Zeilen etwa 344K verbrauchen werden sind das bei 100.000 Zeilen nur etwa viermal soviel. Meiner Meinung nach vernachlässigbar, auch wenn diese im RAM vorgehalten werden.

Jörg

Hallo bluelupo,

hast Du Dein bashrc inzwischen so veraendern koennen, dass es tut, was Du moechtest? Dann wuerde mich naemlich interessieren, wie es jetzt  aussieht.

Gruss,
Jörg

melmarker

@bluelupo:
2 Sachen
- schon mal ins Ubuntu-Wiki geschaut? Man history könnte ebenfalls helfen.
- ich sehe ein Problem bei mehreren offenen Terminals - die letzte geschriebene Historie gewinnt - und das ist meist die, in der am wenigsten passiert ist :) - von daher, bitte hoffe nicht auf Vollständigkeit. Ich tapp da immer wieder rein. :)
Those who would give up essential Liberty, to purchase a little temporary Safety, deserve neither Liberty nor Safety. (Benjamin Franklin, November 11, 1755)
Never attribute to malice that which can be adequately explained by stupidity. (Hanlons razor)

bluelupo

@Jörg: nein keine Änderung, d.h. die .bash_historie wird bei ca. 27.000 Einträgen, egal was in den Bash-Konfigurationsdateien des Users steht, gekürzt.

@melmarker: Ich habe das Netz dazu schon mehrfach "abgegrast", da wird immer auf die beiden Variablen HISTSIZE und HISTFILESIZE verwiesen.

Die Problematik mit den mehrfachen offenen Konsolen ist mir bekannt. Dazu kann man aber die Variable PROMPT_COMMAND in der .bashrc mit history -a bestücken, also sowas:


PROMPT_COMMAND='history -a;echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"'


Das bewirkt ein sofortiges schreiben in die Bash-Historie nach jedem ausgeführten Kommando. Irgendwas läuft trotzdem schief beim Kürzen den Historie.

michaa7

Hast du denn mal nachgeforscht welche anderen umgebungen die .bash_history noch kürzen können (wie in mienem obigen posting angedeutet, screen u.a.).

Zudem nochmals, wenn du duplikate ausfiltern läßt sollten 27000 lines reichlich erinnerungsvermögen bereitstelln. Klar, es wäre schon schön zu wissen, wo, von welchem programm diese grenze festgelegt wurde.
Ok, you can't code, but you still might be able to write a bug report for Debian's sake

ralul

#10
Tip: ein Leerzeichen vor einem Befehl verhindert ein Schreiben in die History ... bei trivialen Befehlen :)

history -a
funktioniert :) :) Danke für den Tip!
experiencing siduction runs better than my gentoo makes me know I know nothing

brummer

Ein workaround könnte sein die bashhistory selber eher klein zu hallten, doppelte Einträge zu löschen und regelmäßig zu archivieren.
http://mywiki.wooledge.org/BashFAQ/088

mylo

Hi bluelupo,

im graf. Modus kann man als fixe Länge max. 100.000 Zeilen angeben. Eine mehr geht schon nicht.
Das wird wohl in irgendeinem "Profil" abgelegt. Vielleicht mal mit 99.999 probieren und dann schauen.

bluelupo

@mylo, die Konsole im KDE ist ein anders Thema. Dieser Verlauf (Historie) hat nichts mit .bash_history zu tun.

@brummer: mal sehen vielleicht werde ich Bash-Histories nochmals jeden Tag sichern und ggf.  dann automatisiert restoren (per Script) wenn sie gekürzt worden sind.

@michaa7: screen habe ich installiert benutze ich aber nicht. Ich werde das Paket mal löschen und beobachten.

michaa7

Quote from: bluelupo on 2015/01/04, 10:52:38
...die Konsole im KDE ist ein anders Thema. Dieser Verlauf (Historie) hat nichts mit .bash_history zu tun.
...
Falls du damit das VT namens "konsole" meinst, das hat natürlich mit .bash_history zu tun, ist mein standard VT.
Ok, you can't code, but you still might be able to write a bug report for Debian's sake