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?
Hallo nach Bayern,
hast Du eine inputrc ? Schau' mal da rein.
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).
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...
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.
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.
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
@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. :)
@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.
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.
Tip: ein Leerzeichen vor einem Befehl verhindert ein Schreiben in die History ... bei trivialen Befehlen :)
history -a
funktioniert :) :) Danke für den Tip!
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
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.
@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.
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.
Hi bluelupo,
vielleicht hilft das http://www.computerhilfen.de/hilfen-6-417412-0.html (http://www.computerhilfen.de/hilfen-6-417412-0.html) weiter oder auch das http://jorge.fbarr.net/2011/03/24/making-your-bash-history-more-efficient/ (http://jorge.fbarr.net/2011/03/24/making-your-bash-history-more-efficient/).
Gruß dsat
@michaa7: Ich meinte den sog. "Verlauf" in den Einstellungen der KDE konsole (Bildlaufleiste siehe Anhang), das regelt der KDE-Desktop unabhängig von der Bash-Historie. Natürlich hast du recht, das auch die KDE konsole die Bash-Historie "bestückt".
@dsat: Der Link (http://blog.jonaspasche.com/2012/10/02/die-annalen-der-bash-geschichte/) beschreibt die Problematik mit HIST-Variablen sehr gut, bloß leider funktioniert die Lösung im Artikel bei mir nicht :-(