Skip to content

Know your terminal skills - CMD Challenge für KonsolenKönner

Wer zum Wochenanfang seine Terminalkenntnisse unter Beweis stellen möchte, der findet mit der CMD Challenge genau das Richtige.

Die Webseite fragt momentan 32 Terminal Befehle ab. Am Anfang noch relativ einfach, dann immer komplexer.

Sowohl für Einsteiger zum Üben als auch für Profis für Zwischendurch, bietet der kleine interaktive Fragenkatalog die nötige Abwechslung.

Commandline-ChallengeDas Kommandozeilen Tool ist Open Source und kann auf Github jederzeit erweitert oder verbessert werden.

CMD Challenge

 

Clink - cmd.exe und Bash Shell Kommandos unter Windows kombinieren

Der gemeine Anwender staunte nicht schlecht (kleine Floskel, wer kennt sie nicht), als Microsoft auf der letzten Konferenz ein natives Ubuntu für Windows ankündigte (siehe Artikel). Darin sollen bekannte Größen wie Emacs oder die Unix-Shell Bash enthalten sein.

Clink

Falls das Warten schwer fällt und aktuell schon die Lust auf ein wenig Bash in der Windows Kommandozeile groß ist, muss nicht gleich zu Komplettlösungen wie Wine oder Cygwin gegriffen werden.

clink

Mit Clink gibt es ein kleines, aber feines Tool, welches die Bedienung der Windows cmd.exe um einiges vereinfacht bzw. verbessert.
Basierend auf der gleichen Readline Library wie Bash, erweitert es die Kommandozeile um Funktionen wie Autovervollständigung, Kopieren, Einfügen, Rückgängig machen oder eine History.

Die interessantesten Befehle sind wohl

    Einfügen aus der Zwischenablage (Ctrl-V).
    Suche im Verlauf(Ctrl-R/Ctrl-S).
    Autovervollständigung (TAB).
    Rückgängig machen (Ctrl-Z).
    Auto  "cd .." (Ctrl-PgUp).
    Alle Befehle (Alt-H)

Anwender, welche die Vorteile der Bash kennen und nutzen, werden sich sicherlich über diese kleine Hilfestellung auf Windows Systemen freuen.

Clink

PGCenter - PostgreSQL Datenbank Statistiken und Leistungsdaten auf einen Blick

PostgreSQL ist die Tage in Version 9.5 erschienen (siehe Artikel). 
Egal ob neues oder altes DB System, eine Analyse der Performance und Auswertung von Zugriffszeiten- oder daten, usw. ist bei vielen Anwendungsszenarien unerlässlich.

PGCenter

Eine Auswertungsmöglichkeit bringt PostgreSQL selbst mit. Unter dem Prefix "pg_stats" stehen verschiedene Mechanismen für Auswertungen zur Verfügung.

Weiter geht PGCenter. Es bündelt diese Auswertungen in einer Ausgabe, die der Prozessüberwachung top ähnelt. Dies sorgt für eine schnelle Übersicht und bringt zusätzlich die Möglichkeit selbst Aktionen auszuführen.

Die Hauptfunktionen von PGCenter werden wie psql Befehle ausgeführt und bieten momentan folgende Möglichkeiten:

postgresql

  • top-like interface
  • use same connection options as with psql
  • show current system load and cpu/memory/swap usage
  • show input/output statistics for devices and partitions like iostat
  • show network traffic statistics for network interfaces like nicstat
  • show current postgres state (connections state, longest transaction, autovacuum)
  • show statistics about tables, indexes, functions, activity, replication
  • show pg_stat_statements statistics: calls, rows
  • show pg_stat_statements statistics: cpu timings, io timings
  • show pg_stat_statements statistics: blks i/o (hits, reads, dirtied, written, temp)
  • show relations sizes info
  • configuration files editor and postgres reload
  • log files viewing (full log or tail)
  • cancel/terminate queries or processes by pid or whole group
  • query reporting

Installation von PGCenter Statistik

Referenzsystem ist ein Ubuntu Server 14.04. Weitere Installationsarten werden auf der Homepage beschrieben 

sudo add-apt-repository ppa:lesovsky/pgcenter
sudo apt-get update
sudo apt-get install pgcenter

Benutzung von PGCenter

Wie bereits oben erwähnt ist die Nutzung von PGCenter an psql Befehle angelehnt. Damit alle Daten ausgewertet werden können, muss ein superuser account wie "postgres" verwendet werden, ansonsten kann es zu Einschränkungen kommen

Eine Möglichkeit die PGCenter Konsole zu starten wäre beispielsweise

sudo -u postgres pgcenter

Hier wird das Tool direkt als Benutzer Postgres gestartet.

pgcenterpgcenter

Befehle für PGCenter

Ein interaktive Bedienung erfolgt mit folgenden Befehlen (Hilfe mit F1).

 

general actions:
  a,d,i,f,r       mode: 'a' activity, 'd' databases, 'i' indexes, 'f' functions, 'r' replication,
  s,t,T           's' sizes, 't' tables, 'T' tables IO,
  x,X,c,v         'x' stmt timings, 'X' stmt general, 'c' stmt IO, 'v' stmt temp.
  Left,Right,/    'Left,Right' change column sort, '/' change sort desc/asc.
  C,E,R           config: 'C' show config, 'E' edit configs, 'R' reload config.
  p                       'p' start psql session.
  l               'l' open log file with pager.
  N,Ctrl+D,W      'N' add new connection, Ctrl+D close current connection, 'W' write connections info.
  1..8            switch between consoles.
subscreen actions:
  B,I,L           'B' iostat, 'I' nicstat, 'L' logtail.
activity actions:
  -,_             '-' cancel backend by pid, '_' terminate backend by pid.
  >,.             '>' set new mask, '.' show current mask.
  Del,Shift+Del   'Del' cancel backend group using mask, 'Shift+Del' terminate backend group using mask.
  A               change activity age threshold.
  G               get report about query using hash.

other actions:
  , Q             ',' show system tables on/off, 'Q' reset postgresql statistics counters.
  z,Z             'z' set refresh interval, 'Z' change color scheme.
  space           pause program execution.
  F1              show help screen.
  q               quit.

Fazit

PGCenter bindet sich gut in die Umgebung ein und liefert viele wichtige Werte rund um einen PostgreSQL Datenbankbetrieb. Anwender, welche mit "top" arbeiten, werden pgcenter mögen.

https://github.com/lesovsky/pgcenter

22 praktische PostgreSQL Befehle

Zum Wochenende eine kleine Auflistung praktischer PostgreSQL Befehle.

postgresql

Zu PostgreSQL verbinden

In eine PostgreSQL Konsole Einloggen

sudo -u postgres psql

Einloggen und direkt zu einer Datenbank verbinden

sudo -u postgres psql -d datanbank


Arbeiten mit Konsolenbefehlen

Alle Datenbanken anzeigen

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)

oder ohne vorherigen Login mit "sudo -u postgres psql -l"

Benutzer auflisten

postgres-# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication | {}
 yolo      | Superuser                                      | {}

Zu einer Datenbank verbinden

postgres=#\c Datenbankname

You are now connected to database "Datenbankname" as user "postgres".

Tabellen anzeigen

postgres=#\dt 

Schemas anzeigen

postgres=#\dn

Funktionen anzeigen

postgres=#\df oder df+

Sequenzen anzeigen

postgres=#\ds

Views anzeigen

postgres=#\dv

Datenbank und Benutzer mit Rechten erstellen

CREATE datenbank;
CREATE USER benutzer WITH PASSWORD 'Geheim';  
GRANT ALL PRIVILEGES ON DATABASE datenbank to benutzer; 

Alle verfügbaren Konsolenbefehle anzeigen

postgres=#\?

Eine bestimmte Datenbankgröße auslesen

select pg_database_size('Datenbankname');

oder in schön

SELECT pg_size_pretty(pg_database_size('Datenbankname'));

oder alle vorhanden Datenbankgrößen anzeigen

select datname, pg_size_pretty(pg_database_size(datname)) as size from pg_database;


Offene Datenbankverbindungen anzeigen

SELECT datname,usename,client_addr,client_port FROM pg_stat_activity ;

Die Konfiguration neu laden (ohne Neustart)

select pg_reload_conf();

Logfile Rotation anwerfen

select pg_rotate_logfile()

PostgreSQL verlassen

postgres=#\q

Backup und Wiederherstellung

Ein Datenbank Backup erstellen

pg_dump --user username --host hostname -b -F c datenbank > /tmp/datenbank.dump 

Alle verfügbaren Datenbanken sichern

pg_dumpall

Datenbank wiederherstellen

pg_restore --user username --host hostname -c -d datenbank datenbank.dump


Das könnte dich auch interessieren

Nerd Welten: Rainbowstream und Facy - Twitter oder Facebook übers Terminal nutzen

Seit dem letzten Artikel sind schon wieder ein paar Tage vergangen, ich schiebe es mal auf den Sommer. Dafür geht es heute um ein richtig nerdiges Thema. 

Facebook oder Twitter über das Terminal nutzen, braucht man das? Vielleicht wenn nur ein Konsole zur Verfügung steht oder der Nerd durchkommt, welcher nicht anders kann....egal, Hauptsache es geht. Aber wie? Das will ich euch heute zeigen.

Rainbowstream - Twitter auf der Konsole nutzen

Der Twitter Client Rainbowstream basiert auf Python, darum muss auf dem Referenzsystem (Ubuntu 14.04) die Python Paketverwaltung installiert sein.

sudo apt-get install python-pip

Installation Rainbowstream

Danach ist die Installation des Client schnell erledigt, die Konfiguration nimmt dafür etwas mehr Zeit in Anspruch. Etwas Geschick mit dem Terminalbrowser w3m ist ebenfalls gefragt, solltet ihr wirklich nur ein Terminal zur Verfügung haben.

sudo pip install rainbowstream

                PIL SETUP SUMMARY
                --------------------------------------------------------------------
                version      Pillow 2.8.2
                platform     linux2 2.7.6 
                             [GCC 4.8.2]
                --------------------------------------------------------------------
                ** TKINTER support not available
                **
JPEG support not available
                ** OPENJPEG (JPEG2000) support not available
                --- ZLIB (PNG/ZIP) support available
                **
LIBTIFF support not available
                ** FREETYPE2 support not available
                **
LITTLECMS2 support not available
                ** WEBP support not available
                **
WEBPMUX support not available
                --------------------------------------------------------------------
                To add a missing option, make sure you have the required
                library, and set the corresponding ROOT variable in the
                setup.py script.

                To check the build, run the selftest.py script.

                changing mode of build/scripts-2.7/pildriver.py from 644 to 755
                changing mode of build/scripts-2.7/pilconvert.py from 644 to 755
                changing mode of build/scripts-2.7/pilfile.py from 644 to 755
                changing mode of build/scripts-2.7/pilfont.py from 644 to 755
                changing mode of build/scripts-2.7/pilprint.py from 644 to 755
                changing mode of /usr/local/bin/pildriver.py to 755
                changing mode of /usr/local/bin/pilconvert.py to 755
                changing mode of /usr/local/bin/pilfile.py to 755
                changing mode of /usr/local/bin/pilfont.py to 755
                changing mode of /usr/local/bin/pilprint.py to 755
              Running setup.py install for PySocks

            Successfully installed rainbowstream python-dateutil arrow pyfiglet twitter Pillow PySocks
            Cleaning up...

Der Start der Software erfolgt nach der Installation einfach mit dem Befehl

rainbowstream

Konfiguration des Clients

Die Terminaloberfläche erklärt euch danach ausführlich die nächsten Schritte, wie Anlegen eines neuen Accounts oder Einloggen mit einem vorhandenen.

Via "Cursor" und "Enter" auf den Text "Twitter" kann zuvor die Sprache ausgewählt werden.

rainbowstream-sprache

Gleiches gilt für andere Texteingaben, in der gewünschten Zeile die Enter Taste betätigen und den Text eingeben.

rainbowstream-anmeldung

Bei der ersten Anmeldung mit euren Zugangsdaten geht ein Browserfenster auf, welche die App für euren Account freischaltet. Solltet ihr einen Server ohne Oberfläche betreiben, geht dies natürlich nicht.

Doch der verwendete w3m Terminal Browser beherrscht Tab Browsing. Denn der API Key wird in einem neuen Fenster angezeigt.

rainbowstream-auth

Ihr solltet ein wenig mit den w3m Befehlen vertraut sein, um zwischen den Fenstern zu wechseln, damit der API Key richtige eingegeben werden kann.

Die wichtigsten w3m Befehle

T    open new tab

C-q    close current tab

{,}    move to next/previous tab

ESC-t    popup tab selection menu

Ein komplette w3m cheat sheet findet ihr hier.

rainbowstream-api-key

Sobald der API Key richtig hinterlegt wurde, kann es mit Rainbowstream und Twitter richtig los gehen.

Rainbowstream bedienen

Nach dem erfolgreichen Registrieren und Einloggen sind natürlich Tastaturbefehle von Nöten.
Angefangen beim Theme Wechsel mit dem Befehl "theme tomorrow_night, solarized, larapaste oder monokai" bis zum ersten Absetzen eines Tweets mit dem einfachen Befehl "t" gefolgt vom Text.

Tweet absetzen: t + text

Trends anzeigen: trends

Hauptseite: home

Retweet: rt + Tweet ID

Zitieren: Quote + Tweet ID + eigener Tweet

Dem Twittern steht nun Nichts mehr im Wege, über "h" kann eine ausführliche Hilfe aufgerufen werden.

rainbowstream-hilfe

Die komplette Liste an Befehlen ist bei den Entwicklern selbst zu finden.

Hier seien noch die richtigen Terminal Befehle erwähnt, damit die Konsole beispielsweise ordnungsgemäß verlassen werden kann.

Terminal Befehle Rainbowstream

h für Hilfe

p für Pause

r für Weiter

c für einen klaren Bildschirm

v für die Version

q für Beenden

rainbowstream-mainFazit

Rainbowstream stellt eine praktische Alternative fürs Terminal dar, dass dadurch Abstriche zum Beispiel in Bezug auf Bilder, gemacht werden müssen ist unvermeidbar. Dafür sorgen die vorhandenen Themes für ein abwechslungsreiches Twitter Erlebnis. 
Die Installation ist mit w3m und dem API Key etwas umständlich aber zu bewältigen.
Dank sinnvoller Tastaturbefehle ist die Bedienung einfach und geht leicht von der Hand. Terminal Freunde werden bei diesem Client nicht "Nein" sagen können.


Facy bringt Facebook auf die Konsole

Auch Facebook lässt sich übers Terminal bedienen, anders als bei Rainbowstream wird anstatt Python dieses Mal Ruby auf der Ubuntu Maschine benötigt. (Ich hatte ja bereits beschrieben wie sich Ruby auf Ubuntu installieren lässt.)

Die Installation ist hier genauso einfach wie beim erwähnten Twitter Client, allerdings wird es bei der Konfiguration etwas kniffliger, da hier ohne richtigen Browser keine Installation möglich ist.

sudo apt-get install ruby ruby-dev libpq-dev

gem install fancy

Der erste Start der Anwendung erfolgt mit dem Befehl "facy"

facy

Facy Konfigurieren

Anders als beim Twitter Client, ist nun zwingend ein richtiger Browser nötig. Zusätzlich wird ein Facebook Developer Account benötigt, denn es muss eine eigene App angelegt werden. 

Die Installation und Konfiguration ist somit über das Terminal leider nicht möglich. Das heißt es muss wie folgt vorgegangen werden

  1. Auf https://developers.facebook.com wechseln
  2. Registrieren und einloggen
  3. Add an new App auswählen
    1. Egal ob Android, Facebook Canvas oder Webseite
  4. Oben Rechts auf Skip and and Create an new App ID klicken
  5. Namen vergeben
  6. App ID erstellen
  7. App ID und App Secret in Fancy hinterlegen.
  8. Eventuell muss bei der App noch an den Zugriffsrechten etwas freigeschaltet werden.

facy-app

Fazit

Bei Facy habe ich irgendwann aufgegeben, da der API Key zusammen mit dem nötigen Secret nicht richtig angenommen wurde. Beziehungsweise angenommen wurden diese schon, aber der generierte Link mit User Token wollte nicht so wie ich...

Mir hat irgendwann die Motivation gefehlt, da die Konfiguration doch etwas aufwendig war. Dadurch, dass Facebook etwas bilderlastiger als Twitter ist, empfinde ich Facebook auf dem Terminal auch nur halb so attraktiv.

Um auf dem aktuellen Stand zu bleiben und den Feed durchtickern zu lassen, ist es sicherlich eine gute Lösung, nur leider nicht für meine Zwecke.