Benutzer:Thomas: Unterschied zwischen den Versionen
Thomas (Diskussion | Beiträge) (→Tasks) |
Thomas (Diskussion | Beiträge) |
||
(22 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
* Jabber: schnittchen ÄT das-labor PUNKT org | * Jabber: schnittchen ÄT das-labor PUNKT org | ||
==meine Vorträge== | |||
* "Linux Konsolen Basics" aus der [[Linux Basics Vortragsreihe]] | |||
* [[Lightning Talks|Lightning-Talk]] "Warum Ruby - 5+ Gründe in 15 Minuten" | |||
==meine Projekte== | |||
(unvollständig...) | |||
* [[Partitionmasker]] | |||
* [https://www.das-labor.org/trac/browser/tools/muelltermine Parser und Generator] für die Abholtermine der drei Müllsorten: macht aus .ics und html-Schnippsel ein einziges .ics | |||
* [[partialmock]] zur Anwendung in Tests in Ruby: Methoden für die Laufzeit eines Tests neu definieren | |||
* [[https://das-labor.org/wiki/Kalender#Weiterverarbeitung_der_Labor-Termine Neue Fassung]] des Skripts, das unseren Kalender parst und daraus RSS-Feeds und einen HTML-Schnippsel macht | |||
* [[LibBracket]] | |||
==Tipps und Tricks== | ==Tipps und Tricks== | ||
===Dienste, die keine X-Clients sind, mit der Gnome Session starten und beenden=== | ===Dienste, die keine X-Clients sind, mit der Gnome Session starten und beenden=== | ||
Das Problem: Dienste, die selbst keine X-Clients sind, werden beim Beenden der X-Session nicht automatisch beendet. Es ist nämlich keineswegs so, dass das Gnome Session Management allen eingetragenen Prozessen zum Schluss ein entsprechendes Signal sendet -- vielmehr müssen Clients das Ende der Session daraus ableiten, dass ihre | Das Problem: Dienste, die selbst keine X-Clients sind, werden beim Beenden der X-Session nicht automatisch beendet. Es ist nämlich keineswegs so, dass das Gnome Session Management allen eingetragenen Prozessen zum Schluss ein entsprechendes Signal sendet -- vielmehr müssen Clients das Ende der Session daraus ableiten, dass ihre Verbindung zum X-Server stirbt. | ||
Das folgende Skript macht sich zu Nutze, dass die dbus-Session zusammen mit der X-Session stirbt. Ein beliebiger X-Client, der nichts tut (dem Nutzer nicht in die Quere kommt), würde es hier tun. Falls jemandem eine "leichtere" Lösung einfällt: bitte melden! | Das folgende Skript macht sich zu Nutze, dass die dbus-Session zusammen mit der X-Session stirbt. Ein beliebiger X-Client, der nichts tut (dem Nutzer nicht in die Quere kommt), würde es hier tun. Falls jemandem eine "leichtere" Lösung einfällt: bitte melden! | ||
Zeile 26: | Zeile 40: | ||
Dieses Skript anpassen, ausführbar ablegen und in die Gnome-Session eintragen (System->Einstellungen->Sitzungen, Tab Startprogramme). | Dieses Skript anpassen, ausführbar ablegen und in die Gnome-Session eintragen (System->Einstellungen->Sitzungen, Tab Startprogramme). | ||
== | ===Auf einem Socket sniffen (unidirektional)=== | ||
Die folgende Bash-pipeline gibt wieder, was Prozess <tt>''PID''</TT> auf seinem file descriptor <tt>''FD''</tt> liest: | |||
strace -p ''PID'' -e read=''FD'' 2>&1 | egrep "^ \| ..... " | cut -b 11-33,35-58 | ruby -n -e 'split().each { |str| $stdout.putc str.hex }' | |||
Will man sich das Ergebnis ansehen, sollte man noch <tt>| hexdump -C | less</tt> anhängen! | |||
Diese Lösung hängt leider empfindlich vom Ausgabeformat von strace ab. | |||
Geht vielleicht nur bei little endian Rechnern, läßt sich aber leicht anpassen. Auch der Write-Fall ist entsprechend machbar. | |||
===Liste aller Sektionen einer langen Manpage=== | |||
Die folgende Pipeline gibt alle Sektionen (und ein klein wenig mehr) von der bash-Manpage: | |||
man bash | grep -Ev ’^( |$)’ | |||
==Howto-mäßige Projekte== | ==Howto-mäßige Projekte== | ||
* [[Benutzer:Thomas/ | * [[HowTo: LVM+Cryptsetup triple layer mit Hibernate-Fähigkeit]] | ||
* [[Benutzer:Thomas/ | |||
==Dies+Das== | |||
* [[Benutzer:Thomas/WIP-Banner]] | |||
* [[Benutzer:Thomas/Test1]] | |||
* [[Benutzer:Thomas/Test2]] | |||
* [[Benutzer:Thomas/Test3]] | |||
* [[Benutzer:Thomas/Test3/doc]] | |||
* [[Benutzer:Thomas/Lebenszyklus einer Labor-Veranstaltung]] | |||
* [[Benutzer:Thomas/Startseitenentwurf]] |
Aktuelle Version vom 16. April 2011, 23:57 Uhr
Kontakt[Bearbeiten | Quelltext bearbeiten]
- Jabber: schnittchen ÄT das-labor PUNKT org
meine Vorträge[Bearbeiten | Quelltext bearbeiten]
- "Linux Konsolen Basics" aus der Linux Basics Vortragsreihe
- Lightning-Talk "Warum Ruby - 5+ Gründe in 15 Minuten"
meine Projekte[Bearbeiten | Quelltext bearbeiten]
(unvollständig...)
- Partitionmasker
- Parser und Generator für die Abholtermine der drei Müllsorten: macht aus .ics und html-Schnippsel ein einziges .ics
- partialmock zur Anwendung in Tests in Ruby: Methoden für die Laufzeit eines Tests neu definieren
- [Neue Fassung] des Skripts, das unseren Kalender parst und daraus RSS-Feeds und einen HTML-Schnippsel macht
- LibBracket
Tipps und Tricks[Bearbeiten | Quelltext bearbeiten]
Dienste, die keine X-Clients sind, mit der Gnome Session starten und beenden[Bearbeiten | Quelltext bearbeiten]
Das Problem: Dienste, die selbst keine X-Clients sind, werden beim Beenden der X-Session nicht automatisch beendet. Es ist nämlich keineswegs so, dass das Gnome Session Management allen eingetragenen Prozessen zum Schluss ein entsprechendes Signal sendet -- vielmehr müssen Clients das Ende der Session daraus ableiten, dass ihre Verbindung zum X-Server stirbt.
Das folgende Skript macht sich zu Nutze, dass die dbus-Session zusammen mit der X-Session stirbt. Ein beliebiger X-Client, der nichts tut (dem Nutzer nicht in die Quere kommt), würde es hier tun. Falls jemandem eine "leichtere" Lösung einfällt: bitte melden!
#!/usr/bin/ruby SUB_COMMAND = "Pfad des Dienstes" COMMAND_ARGS = "-d -f blahfu".split TERMINATE_SIG = "TERM" #Ändere zu INT für den Rails Webrick ./script/server child = fork { exec(SUB_COMMAND, *COMMAND_ARGS) } puts child #ein x-client, der sich mit dem Ende der Sitzung beendet system("dbus-monitor", "sender='yyy.invalid'") Process.kill(TERMINATE_SIG, child) Process.wait(child, Process::WNOHANG)
Dieses Skript anpassen, ausführbar ablegen und in die Gnome-Session eintragen (System->Einstellungen->Sitzungen, Tab Startprogramme).
Auf einem Socket sniffen (unidirektional)[Bearbeiten | Quelltext bearbeiten]
Die folgende Bash-pipeline gibt wieder, was Prozess PID auf seinem file descriptor FD liest:
strace -p PID -e read=FD 2>&1 | egrep "^ \| ..... " | cut -b 11-33,35-58 | ruby -n -e 'split().each { |str| $stdout.putc str.hex }'
Will man sich das Ergebnis ansehen, sollte man noch | hexdump -C | less anhängen!
Diese Lösung hängt leider empfindlich vom Ausgabeformat von strace ab.
Geht vielleicht nur bei little endian Rechnern, läßt sich aber leicht anpassen. Auch der Write-Fall ist entsprechend machbar.
Liste aller Sektionen einer langen Manpage[Bearbeiten | Quelltext bearbeiten]
Die folgende Pipeline gibt alle Sektionen (und ein klein wenig mehr) von der bash-Manpage:
man bash | grep -Ev ’^( |$)’