Archiv der Kategorie: Shell

Browser: Verlauf/Historie als CSV Datei speichern

Wer einmal seinen Browserverlauf analysieren wollte wird feststellen, mit den Bordmitteln von Firefox und Chrome wird das schwierig und ist wenig übersichtlich.

Deshalb ein Python-Skript, um von Firefox oder Chrome den Verlauf, der in einer Sqlite-DB residiert, in eine CSV-Datei zu überführen, die dann bequem mit Excel ausgewertet werden kann.

https://github.com/medianetix/browser-history-to-csv/

Für beide Browser (unter LInux getestet) wird eine CSV-Datei mit folgenden Spalten angelegt:

  • id
  • url
  • domain
  • visit_count
  • last_visit_time / last_visit_date
    (Timestamp – Vorsicht: Chrome startet 1601-01-01 statt 1970-01-01)
  • last_access (ISO Datum)

Shell: Pakete nicht updatebar (packages not upgraded)

Wenn Pakete nicht ge-upgraded werden und die Mitteilung kommt:

„12 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.“

sudo apt list --upgradable

Die Pakete, die dann angezeigt werden zB mutter und mutter-common versuchen einzeln zu installieren:

sudo apt-get install --only-upgrade mutter

Im Erfolgsfall wurde das Paket installiert (in diesem Beispiel wurde auch das 2. Paket mitinstalliert). Sollte es fehlende Pakete geben:

sudo apt-get --with-new-pkgs upgrade

Shell: Fehlende Libraries manuell nachinstallieren (zB libssl.so.1.0.0)

Ein älteres Softwarepaket von GOG.com (BaldursGate=myprog) – was sogar mit einem Installer für Linux kam – verweigerte seinen Dienst unter Ubuntu 20.04, weil zwei Libraries fehlten (libssl.so.1.0.0 und libcrypto.so.1.0.0). Die Fehlermeldung sieht dann so aus: „ImportError: libssl.so.1.0.0: cannot open shared object file: No such file or directory“

ldd myprog

ldd lieferte Liste mit den zwei fehlenden Libraries (not found). An dieser Stelle eine Warnung bei untrusted binaries: Statt ldd lieber objdump zu verwenden, um ungewollte Codeausführung zu vermeiden (siehe: man ldd).

objdump -p myprog | grep NEEDED

Die fehlenden Libraries können aus alten Paketquellen besorgt und ausgepackt werden. Oder ein

locate libssl.so.1.0.0

zeigt alle verfügbaren Versionen auf dem Rechner an. Die können nun in den Zielordner der Wahl (/lib/x86_64-linux-gnu/) kopiert werden. Aber Achtung: Keine 32-bit und 64-bit Versionen mischen.

file libssl.so.1.0.0

bringt Klarheit, um welche Version es geht. Denn eine 32-bit Version von libssl.so.1.0.0 in /lib/x86_64-linux-gnu/ wird ignoriert und die obige Fehlermeldung bleibt, obwohl eine Datei mit passendem Namen im Ordner liegt! Nach dem Erstzen durch eine 64-bit-Version lief alles planmässig. Die Vorgehensweise für libcrypto.so.1.0.0 war dann identisch.

Hinweis: Das der Einsatz veralteter Software problematisch sein kann, sollte klar sein und unter Sichterheitsaspekten abgewogen werden.

Shell: Sehr große Verzeichnisse löschen (PHP Sessions)

Szenario:

  • Fehler bei PHP’s Sessionbereinigung (garbage collection)
  • große Anzahl Dateien in einem Ordner, die nicht mehr gebraucht werden (hier: über 17 mio)
  • Löschen muss im laufenden Betrieb stattfinden, da Produktiv-Server.

Methode 1 (langsam und sicher):

find /var/lib/php/sessions -type f -mtime +3 -delete

Hier werden alle Dateien (-type f) gelöscht, deren Modifikation 3 Tage zurücklag (mtime +3) – dieser Parameter kann angepasst/weggelassen werden. Es empfiehlt sich, den vollen Pfad anzugeben, um versehentliches Löschen in einem anderen verzeichnis (zb ./) auszuschliessen. Sollte der Hauptspeicher knapp sein: Shell: RAM und Swap freigeben ohne Reboot

Weiterlesen

Shell: RAM und Swap freigeben ohne Reboot

Der Hauptspeicher ist fast voll und ein Reboot soll nicht erfolgen? Dann gibt es andere Optionen. Zum einen können Dienste/Services restarted werden, die dafür bekannt sind Speicher zu fressen (zB Apache2). Wenn das nichts mehr bringt und eigentlich ein Reboot ansteht, dann kann die nachfolgende Befehlssequenz helfen:

sync ; sync ; sync ; echo 3 > /proc/sys/vm/drop_caches

Sie schreibt die Daten im Speicher auf die Platte (Pagecache, Inodes etc.). Als ich die Kommandos das erste Mal aufgerufen habe, waren 12GB von 16GB belegt. Nach Ausführung wurden nur noch ~300MB belegt.

Ein weiteres Problem kann ein zu grosser (belegter) Swap sein. Aber auch hier gibt es eine hilfreiche Sequenz, um das Rebooten zu vermeiden:

sync ; sync ; sync ; swapoff -a && swapon -a

Dadurch wird der Swap in den Arbeitspseicher geholt, der ausreichend kapazität zur Aufnahme des Swaps haben sollte (sonst kann im Ernstfall der rechner abstürzen).