Bananas Development Blog: share your thoughts

Prozessprotokoll unter GNU/Linux

Dieser Beitrag soll es ermöglichen ohne zusätzliche Installation von Dingen wie audit oder DTrace.

Es passiert etwas auf einem System und man weis nicht was und warum. Es entstehen Fehler aber man kommt einfach nicht dahinter warum das so ist.
Man hat eventuell schon einen Verdacht aber man kann ihn nicht fassen.

Irgendwas muss auf dem System schief laufen. Blos wie kommt man an diese Information ?

Der Befehl top liefert eine aktuelle Liste der Prozesse. Es wird aber nicht angezeigt was genau ausgeführt wird und wie die Prozesse zusammenhängen und welche Parameter diese verwenden.

ps liefert da schon mehr Informationen. Ohne weitere Parameter aber auch nutzlos.
ps efaux

Dies zeigt schon eher das was wir brauchen.

Wie bekommen wir es aber nun hin, dass wir ein Protokoll bekommen ?
Denn eine kurze Momentaufnahme reicht nicht. Denn woher sollen wir wissen wann und wie lange der Prozess läuft ?

Wir basteln uns einfach was:
( while [ 1 ] ; do ps efaux ; sleep 1; done ) | tee /path/to/protokoll


Und schon haben wir ein Protokoll mit dem wir den Prozess einfangen können. Wer es schneller und noch aktueller haben möchte als nur jede Sekunde, der nimmt einfach sleep 1 raus. Dabei aber darauf achten, dass das file schnell sehr groß werden kann !

git diff history auf eine Datei

Wenn man wissen möchte was den so alles mit einer Datei innerhalb eines git Repository so passiert ist, dann sollte man folgenden Befehl verwenden:

git diff -p /path/to/file


Somit hat man eine schöne Übersicht mit über alle Änderungen. Wenn einem die Liste zu lang ist, einfach noch ein "| more" hinten an hängen.

Bug des Tages, oder wie man es nicht machen sollte.

Autsch. Der Bug tat weh...

GIANT BUG... ... so sorry.... issue #123, issue #122, issue #121

Junge, Junge, da sind sicherlich ein paar System den Bach runter gegangen !

via: neoterisch.de

Speicherplatz pro Dateityp berechnen

Wenn man wissen möchte wie viel Speicherplatz für einen speziellen Dateityp verbraucht wird, dann kann man das so machen:

Bash Einzeiler:
find . -name '*.gz' | xargs stat -f"%z" | awk '{ sum+=$1 } END { print sum/1024/1024 }'


Nun hat man den Speicherplatz für alle *.gz Dateien in MB.

Bash Spielerei. Doomsday.sh

Nette Spielerei auf Bash Art.

Jedes mal wenn man ein neues Terminal auf macht, wird man gefragt welcher Wochentag an dem Datum nun ist. Hat man falsch
geantwortet, schließt sich das Terminal wieder ;-)

doomsday-sh | BASH script for testing your ability to calculate day-of-week for a given date
A BASH script for testing your ability to calculate day-of-week for a given date. Download from here: http://doomsday-sh.googlecode.com/hg/doomsday.sh

You may use whatever means you like to work out what day it will be. I like the Doomsday Algorithm:

http://en.wikipedia.org/wiki/Doomsday_algorithm
Invented by John Horton Conway. "To improve his speed, he practices his calendrical calculations on his computer, which is programmed to quiz him with random dates every time he logs on.[citation needed]". This script is intended to do just that.



Bash. Überpüfen ob ein Befehl vorhanden ist

Argh.

Wie kann man überprüfen ob ein Befehl vorhanden ist, auf dem man aufbauen will ?

# check if screen is installed
testScreen=`command -v screen`;
if [ ! $testScreen ] ; then
    echo "screen command is not installed.";
    exit 1;
fi


Ich weiß, es gibt noch anderen Varianten aber diese finde ich am Besten und einfachsten.

which ist nicht immer vorhanden und irgendwas mit grep zu durchsuchen ist auch doof.


UPDATE: hier gibt es auch so was

Linux Perfomance Monitoring

Jeder möchte ja wissen was der Rechner den so treibt und was es auslastet.

Die folgende Liste, hat eine schöne Sammlung von Tools mit dem man sehr bequem an diese Informationen rannkommt:
6 Command Line Tools for Linux Performance Monitoring

wget --output-document und das Datum der Datei

Wenn man mit wget eine URL abfrägt und sich das Ergebnis in eine Datei schreiben lässt, dann wird man sich freuen oder nicht.

Denn die Datei hat das Datum der angefragten URL.

In vielen Fällen nützlich. Aber leider nicht immer.

Wenn man nun diese Methode dazu nimmt um Inhalte mit anderen abzugleichen, dann kommt man zu dem Punkt bei dem man sich frägt wie oft dies geschehen soll. Ok hat man die Möglichkeit auf einen cronJob dann ist das eh egal.

Hat man aber diese Möglichkeit nicht, dann muss man sich irgendwas einfallen lassen, wie man herausfinden kann ob man die Aktion erneut ausführen soll oder nicht. Denn es ist ja unnötig die Abfrage zu starten wenn eh nichts neues dabei raus kommt.

Da ja nun die Datei aber das Erstelldatum hat und nicht das Datum an dem die letzte Abfrage durchgeführt wurde, kann man nicht über die Datumsinfo der Datei gehen wie alt den diese ist. Oder doch ?

Nun ja im Grunde ganz einfach ;-)
#!/bin/bash
wget -q urld.de -O savefile.html
touch -d `date +%R` savefile.html

Damit wir das Änderungsdatum der savefile.html Datei auf die aktuelle Systemzeit gesetzt.

Somit hat man nun die Möglichkeit über das Änderungsdatum der Datei herauszufinden ob diese zu alt ist oder nicht.



ASCII Generator auf der Console. FIGlet u. TOIlet

Man kennt bestimmt ASCII Generator.

Da kann man Text als ASCII Kunst darstellen lassen.

Nun gibt es das auch auf der Console:
FIGlet is a program for making large letters out of ordinary text

http://www.figlet.org/

Bei Gentoo ist es im portage
Da gibt es sogar eine Alternative die figlet ersetzten soll.

Besser mit VIM und der Bash umgehen

Da ich ja Linux Fan und Freak bin, benutze ich auch VIM und die Bash ;-)

Da man ja nie auslernt habe ich mal ein paar nützliche Dinge für euch:

UNIX tips: Learn 10 good UNIX usage habits

Scripting the Vim editor, Part 1: Variables, values, and expressions
Scripting the Vim editor, Part 2: User-defined functions
Scripting the Vim editor, Part 3: Built-in lists
Scripting the Vim editor, Part 4: Dictionaries

Happy Coding

Linux Befehlszeile meistern

Jeder kennt sie aber die wenigsten nutzen sie. Vorallem unsere liebe ubuntu Gemeinde... ;-)

Learn the basics for staying alive at the Linux command line. If you're very new to the Linux CLI, these tutorials should provide you with the basic command line skills, as well as teach you some neat command line tricks.


An introduction to the Linux command line

Banana
out.

shell-fu

Ich hatte ja mal über Commandline-Fu berichtet.
(Mittlerweile habe ich sogar eine Seite darüber auf meiner Homepage.)

Nun denn bin ich über was ähnliches gestoßen:

Shell-fu is a place for all those little command line goodies that you come across and then can never find again when you need them. Hopefully we'll end up with a comprehensive and easily usable resource for anyone working with the shell. We've a little way to go yet, and we'd appreciate your comments (just hit the 'Contact' link in the menu above).

If you see an entry you like (or dislike) please use the arrows to vote up or down. You can also submit your own tips/tricks and they will be added to the site once checked over by our moderator monkeys.

[shell-fu]$

Das ergänzt sich ganz gut zu Commandline-Fu

Banana
out.

Bash lernen und verstehen

die developerWorks Seiten von IBM sind immer sehr hielfreich.

Hier nun eine Reihe die sich mit bash (Bourne again shell) beschäftigen und es leichter machen damit umzugehen.
Summary: By learning how to program in the bash scripting language, your day-to-day interaction with Linux will become more fun and productive, and you'll be able to build upon those standard UNIX constructs (like pipelines and redirection) that you already know and love. In this three-part series, Daniel Robbins will teach you how to program in bash by example. He'll cover the absolute basics (making this an excellent series for beginners) and bring in more advanced features as the series proceeds.


Bash by example, Part 1
Bash by example: Part 2
Bash by example: Part 3

Viel Spass.

banana
out

Pirates and Ninjas: Emacs or Vi?

Schöner Artikel der keiner der üblichen "bad/good Vi/Emacs" ist, über VI und Emacs.


Philosecurity has conducted countless hours of research, interviewed real ninjas and pirates in their natural environs, and launched intensive laboratory studies involving monkeys in order to bring you, our readers, the scientifically proven answers you demand.


Pirates and Ninjas: Emacs or Vi?

Banana (Ninja)
out