Archiv für den Monat: September 2015

Git: Lokal in remote Repository

Repository anlegen, dazu in gewünschtes Verzeichnis mydir wechseln:

git status, git add, git commit
… um Änderungen vorzunehmen.

Wenn noch nicht geschehen, dann ein paar globale Einstellungen für Git festlegen:

Config anzeigen lassen mit:

Repo mit remote Server verbinden (hier auf bestehenden Github-Server-Account):

Weiterlesen

Shell: Daemonize Script mit supervisord

Um ein Script im Hintergrund laufen zu lassen kann launchtool, upstart oder start-stop-daemon verwendet werden.
Ein einfacher Weg ist aber die Verwendung von supervisord (einem Python-Paket). Nach der Installation mit

muss die Konfigurationsdatei (Ubuntu: /etc/supervisor/supervisord.conf) angepasst werden.
Dazu muss wenigstens ein Programm hinzugefügt werden, damit sich supervisord darum kümmern kann.

Hier ein Beispiel:

  • Python-Interpreter mit script.py aufrufen
  • Genau eine Instanz erlauben
  • Beim Hochfahren des Rechners starten
  • script.py restarten, wenn das Script nicht mehr läuft
  • Als User „myuser“ laufen lassen

Weiterlesen

Postgres: Advisory Locks und OID für Tabelle ermitteln

Explizite Locks können Race-Conditions verhindern, sind aber blockend.

Advisory locks sind nicht blockend, müssen dafür aber von der Software verarbeitet werden.
Im Grunde wird in der pg_locks ein BigInt gespeichert, den man abfragen kann.

Das Setzen und Abfragen eines Locks kann mit einem BigInt oder mit zwei Integern als ClassId und ObjId erfolgen. Wenn man nur die id einer Tabelle verwendet (würde dann als BigInt interpretiert), dann hätte eine zweite Tabelle mit der gleichen id ebenfalls einen Lock (wenn er abgefragt wird), was ja nicht gewollt sein kann.

Nimmt man eine Nummer für die Tabelle (customer) dann muss die ja irgendwo systemweit verwaltet werden. Postgres hat ja für alle Tabellen bereits eine OID vergeben, die sich dafür eignet.
Die Abfrage mit einem Cast ist einfacher, als die Postgres-Tabellen direkt abzufragen:
SELECT ‚customer‘::regclass::oid liefert die OID zurück. Wenn wir den Datensatz mit der id 17 sperren wollen, dann wäre folgender Query erforderlich:

Zum Entsperren:

Um alle Advisory Locks zu löschen:

Um sich die vorhandenen Locks anzuzeigen:

Shell: awk sourcecode zeilen zählen

Alle PHP-Dateien finden und zählen:

Wenn darin aber Verzeichnisse oder Dateien sind, die man ausschliessen möchte, dann kann es Sinn machen das Ergebnis erst mal in eine Datei zu schreiben und diese manuell zu bereinigen und danach das Zählen durch awk vorzunehmen:

Jetzt kann die Ausgabe bereinigt werden (nicht vergessen die letzte Zeile mit der Zusammenfassung zu löschen). Und dann lässt man awk zum Zählen laufen, um die erste Spalte aufzusummieren:

Shell: Wer ist eingeloggt, wer war eingeloggt?

Anzeigen, wer gerade eingeloggt ist:

Auflisten, wer sich wann zuletzt eingeloggt hat: