Kategorien
qnap Unix

qnap Check Razzia

Um zu überprüfen, die RAID Lauf

cat / proc / mdstat

Um manuel setzen Sie die Geschwindigkeit

Echo 100000 > /proc / sys / dev / Raid / speed_limit_max

Um manuel den RAID zu überprüfen

Echoprüfung > /sys / block / MD0 / md / sync_action

 

Kategorien
Raspberry PI Unix

Raspberry Pi: VNC Server installieren

Wer seinen Raspberry Pi weder an einem eigenen Display, noch ausschließlich über eine Konsole bedienen möchte, für den ist der VNC Server das richtige. VNC überträgt das Bild der grafischen Oberfläche über das Netzwerk, oder bei Portfreigabe auch über das Internet. Alternativ lässt sich Remote Desktop installieren, wobei ich auf die Vor- und Nachteile der beiden Protokolle an dieser Stelle nicht eingehen möchte, da diese an anderer Stelle im Netzausführlich erläutert werden. Im Folgenden beschreibe ich wie man einen VNC-Server auf seinem Raspberry Pi zum Laufen bekommt.
Voraussetzung: Raspbian oder vergleichbare Distribution installiert

Step 1
Als VNC-Server für den Raspberry Pi empfiehlt sich das Tight VNC Package, welches man mittels des Paketmanagers APT installieren kann.

sudo apt-get install tightvncserver

Step 2

Nun installieren wir noch preload, ein kleines Tool, welches vorhersagt, welche Programme und Abhängigkeiten als nächstes geöffnet werden und diese bereits zuvor in den RAM lädt. Dies hat den Vorteil, dass die grafische Oberfläche wesentlich schneller läuft. Für den Betrieb des Raspberry Pis als reinen Server ist preload nicht zu empfehlen.

sudo apt-get install preload

Step 3

Darauffolgend passen wir eine Konfiguration von preload an, damit die Nutzung des RAMs effektiver gehandhabt wird.

sudo sed -i 's/sortstrategy = 3/sortstrategy = 0/g' /etc/preload.conf

Step 4

Jetzt starten wir den VNC-Server zum ersten mal. Dabei werden wir nach einem Passwort zum Einloggen gefragt. Daraufhin kann man festlegen, ob man ein View Only Passwort festlegen möchte, um Dritten ohne Herausgabe oder Änderung des eigenen Passwortes erlauben zu können, den Desktop des Raspberry Pis zu betrachten.

tightvncserver

Step 5

Nun stoppen wir den VNC-Server wieder, um weitere Einrichtungen vorzunehmen.

vncserver -kill :1

Step 6

Wir legen nun ein Startscript für den VNC-Server mit dem Namen vnc.sh an, in welches wir die unten stehenden Befehle eintragen. Dabei kann man 1280×720 durch die gewünschte Auflösung ersetzen. Ich empfehle jedoch ohne Overclocking/Übertakten nicht über 1280×720 hinaus zu gehen, da dies deutlich auf die Performance geht.

nano vnc.sh

 

#!/bin/sh
vncserver :1 -geometry 1280x720 -depth 24

Step 7
Jetzt geben wir der eben angelegten Datei Rechte ausgeführt zu werden.

chmod +x vnc.sh

Möchte man VNC automatisch mit dem Booten des Raspberry Pis starten lassen so müssen wir folgende Schritte beachten.

Step 8 (optional)
Wir erstellen ein Start-/Stop-Script im Verzeichnis /etc/init.d mit dem Namen vncboot und fügen das folgende Startscript in dieses ein. Wie in Step 6 kann die Auflösung wieder angepasst werden.

sudo nano /etc/init.d/vncboot

### BEGIN INIT INFO
# Provides: vncserver
# Required-Start: networking
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts VNC
# Description:
### END INIT INFO

export USER='pi'

eval cd ~$USER

# Check state
case "$1" in
start)
su $USER -c '/usr/bin/vncserver :1 -geometry 1280x720 -depth 24'
echo "Starting vncserver for $USER"
;;
stop)
pkill Xtightvnc
echo "vncserver stopped"
;;
*)
echo "Usage: /etc/init.d/vncboot {start|stop}"
exit 1
;;
esac

exit 0

 

Step 9 (optional)
Nun müssen wir der erstellten Datei wieder weitere Rechte einräumen.

sudo chmod 755 /etc/init.d/vncboot

Step 10 (optional)

Abschließend müssen wir das Script in den Autostart einbinden.

sudo update-rc.d vncboot defaults

Endgültig fertig! Beim Starten des Raspberry Pis wird nun automatisch der VNC-Server gestartet. Wenn ihr den Raspberry Pi in dieser Form betreiben möchtet, kann ich euch empfehlen diesen zu übertakten, da die grafische Oberfläche dann wesentlich flüssiger läuft. Wie dies geht erklärte ich in dem Artikel Overclocking/Übertakten ohne Garantieverlust. Verbinden kann man sich nun im VNC Client über den Port 5901. Als Client kann ich für Windows TightVNC Viewer, für Mac OS X RealVNC und für Linux das Paket tightvnc-java empfehlen.

Kategorien
Unix Web

Proxy-Multicast-Stream über Apache-Proxy mit Authentifizierung

Ich konfigurierte einen Proxy für Multicast zu http

Dazu benötigen Sie beispielsweise für Proxying Verkehr Form Telekom Home Entertainment

wget https://freefr.dl.sourceforge.net/project/udpxy/udpxy/Chipmunk-1.0/udpxy.1.0.23-0-prod.tar.gz
tar -xzvf udpxy.1.0.23-0-prod.tar.gz
machen
make install

in den crontab

1 1 * * * root udpxy -p 4022

Neuanlegen für die Authentifizierung

htpasswd -c /etc/apache2/.htpasswd sammy

fügen Sie ein addtional Benutzer

htpasswd /etc/apache2/.htpasswd sammy2

in den VHOST

        <Lage / udp>
                http Proxypass://localhost:4022/udp
                http Proxypassreverse://localhost:4022/udp
                AuthType Basic
                AuthName "Passwort erforderlich"
                AuthUserFile /etc/apache2/.htpasswd
                Require valid-user
                bestellen Sie verweigern,ermöglichen
                Lassen Sie von allen
        </Ort>

ermöglichen auf Apache Mod falls noch nicht geschehen

a2enmod Proxy proxy_http

Ändern Sie die Kanalliste wie für telekom

#EXTM3U
#EXTINF:-1,(05) RTL
https://Benutzer:password@server/udp/239.35.20.10:10000

#EXTINF:-1,(06) RTL2
https://Benutzer:password@server/udp/239.35.20.22:10000

#EXTINF:-1,(07) RTLplus
https://Benutzer:password@server/udp/239.35.20.57:10000

#EXTINF:-1,(08) Pro7
https://Benutzer:password@server/udp/239.35.20.21:10000

#EXTINF:-1,(09) Kabel1
https://Benutzer:password@server/udp/239.35.20.38:10000

#EXTINF:-1,(10) Vox
https://Benutzer:password@server/udp/239.35.20.11:10000

#EXTINF:-1,(11) Super RTL
https://Benutzer:password@server/udp/239.35.20.39:10000

#EXTINF:-1,(12) ntv
https://Benutzer:password@server/udp/239.35.20.47:10000

#EXTINF:-1,(13) sixx
https://Benutzer:password@server/udp/239.35.20.9:10000

#EXTINF:-1,(14) Pro7maxx
https://Benutzer:password@server/udp/239.35.20.33:10000

#EXTINF:-1,(15) RTLNITRO
https://Benutzer:password@server/udp/239.35.20.59:10000

#EXTINF:-1,(16) arte
https://Benutzer:password@server/udp/239.35.10.20:10000

#EXTINF:-1,(17) Phönix
https://Benutzer:password@server/udp/239.35.10.22:10000

#EXTINF:-1,(18) 3sat
https://Benutzer:password@server/udp/239.35.10.6:10000

#EXTINF:-1,(19) Kikka
https://Benutzer:password@server/udp/239.35.10.19:10000

#EXTINF:-1,(20) tagesschau24
https://Benutzer:password@server/udp/239.35.10.25:10000

#EXTINF:-1,(21) Einsfestival
https://Benutzer:password@server/udp/239.35.10.21:10000

#EXTINF:-1,(22) EinsPlus
https://Benutzer:password@server/udp/239.35.10.26:10000

#EXTINF:-1,(23) ARD-alpha
https://Benutzer:password@server/udp/239.35.10.24:10000

#EXTINF:-1,(24) ZDF Kultur
https://Benutzer:password@server/udp/239.35.10.23:10000

#EXTINF:-1,(25) ZDF Infokanal
https://Benutzer:password@server/udp/239.35.10.28:10000

#EXTINF:-1,(26) ZDF neo
https://Benutzer:password@server/udp/239.35.10.27:10000

#EXTINF:-1,(27) Deutsche Welle
https://Benutzer:password@server/udp/239.35.20.44:10000

#EXTINF:-1,(28) BR Nord
https://Benutzer:password@server/udp/239.35.10.13:10000

#EXTINF:-1,(29) hr-Fernsehen
https://Benutzer:password@server/udp/239.35.10.8:10000

#EXTINF:-1,(30) MDR Sachsen
https://Benutzer:password@server/udp/239.35.10.9:10000

#EXTINF:-1,(31) NDR
https://Benutzer:password@server/udp/239.35.10.10:10000

#EXTINF:-1,(32) Radio Bremen TV
https://Benutzer:password@server/udp/239.35.10.12:10000

#EXTINF:-1,(33) rbb Berlin
https://Benutzer:password@server/udp/239.35.10.14:10000

#EXTINF:-1,(34) SR Fernsehen
https://Benutzer:password@server/udp/239.35.10.15:10000

#EXTINF:-1,(35) SWR Fernsehen BW
https://Benutzer:password@server/udp/239.35.10.16:10000

#EXTINF:-1,(36) WDR
https://Benutzer:password@server/udp/239.35.10.18:10000

#EXTINF:-1,(37) Das Erste HD
https://Benutzer:password@server/udp/239.35.10.1:10000

#EXTINF:-1,(38) ZDF HD
https://Benutzer:password@server/udp/239.35.10.2:10000

#EXTINF:-1,(39) ARTE HD
https://Benutzer:password@server/udp/239.35.10.3:10000

#EXTINF:-1,(40) Phoenix HD
https://Benutzer:password@server/udp/239.35.10.48:10000

#EXTINF:-1,(41) KiKA HD
https://Benutzer:password@server/udp/239.35.10.11:10000

#EXTINF:-1,(42) 3sat HD
https://Benutzer:password@server/udp/239.35.10.47:10000

#EXTINF:-1,(43) Tagesschau 24 HD
https://Benutzer:password@server/udp/239.35.10.63:10000

#EXTINF:-1,(44) Einsfestival HD
https://Benutzer:password@server/udp/239.35.10.58:10000

#EXTINF:-1,(45) EinsPlus HD
https://Benutzer:password@server/udp/239.35.10.59:10000

#EXTINF:-1,(46) ZDF Kultur HD
https://Benutzer:password@server/udp/239.35.10.54:10000

#EXTINF:-1,(47) ZDF neo HD
https://Benutzer:password@server/udp/239.35.10.55:10000

#EXTINF:-1,(48) ZDF Infokanal HD
https://Benutzer:password@server/udp/239.35.10.56:10000

#EXTINF:-1,(49) Bayern Süd HD
https://Benutzer:password@server/udp/239.35.10.49:10000

#EXTINF:-1,(50) HR HD
https://Benutzer:password@server/udp/239.35.10.60:10000

#EXTINF:-1,(51) MDR HD
https://Benutzer:password@server/udp/239.35.10.61:10000

#EXTINF:-1,(52) NDR HD
https://Benutzer:password@server/udp/239.35.10.50:10000

#EXTINF:-1,(53) RBB HD
https://Benutzer:password@server/udp/239.35.10.62:10000

#EXTINF:-1,(54) SWR BW HD
https://Benutzer:password@server/udp/239.35.10.51:10000

#EXTINF:-1,(55) WDR HD
https://Benutzer:password@server/udp/239.35.10.53:10000

#EXTINF:-1,(56) SR HD
https://Benutzer:password@server/udp/239.35.10.64:10000

#EXTINF:-1,(01) Das Erste
https://Benutzer:password@server/udp/239.35.10.4:10000

#EXTINF:-1,(02) ZDF
https://Benutzer:password@server/udp/239.35.10.5:10000

#EXTINF:-1,(03) Sa 1
https://Benutzer:password@server/udp/239.35.20.20:10000

#EXTINF:-1,(04) SAT1 Gold-
https://Benutzer:password@server/udp/239.35.20.24:10000

 

Kategorien
plesk Unix Web Wordpress

Wordpress autoupdater

wp-cli installieren -> http://wp-cli.org/

Verwenden Sie dieses Skript

#!/bin / bash

Updater(){
        wp Kern Update --allow-root
        wp Kern update-db --allow-root
        wp-Plugin Update --all --allow-root
        wp Thema Update --all --allow-Wurzel
        wp Kernsprache Update --allow-root
        CGroup = $(stat -c '% G' wp-cron.php)
        CUser = $(stat -c '% U' wp-cron.php)
        chown $ cUser:$cGroup ./* -rf
}

für i in $(find / var / www / vhosts -name wp-cron.php); tun
        wpdir = $(i echo $ | sed -r 's / wp-cron.php // g')
        echo $ wpdir
        cd $ wpdir
        Updater
erledigt
Kategorien
Raspberry PI Unix Web

Funksteckdosen via Raspberry Pi über das Terminal, Webinterface oder Siri steuern – 433 mHz

Belegung

rpi2-pins

RaspberryPiTransmitterReceiver
Pin 2 / 4 (5V) VCC VCC
Pin 6 / 9 (GND) GND GND
Pin 11 (GPIO17) – RPi Nr.1 ATAD
Pin 13 (GPIO27) – RPi Nr.2 DATA (to the left of GND)

Software

Kommen wir nun zur Software. Hierzu müsst ihr erstmal euren Raspberry Pi starten, an dem alles wie oben beschrieben montiert wurde. Anschließen solltet ihr erst mal

sudo apt-get update

ausführen. Dadurch werden eure Paketquellen aktualisiert. Dann muss git-core installiert werden (falls nicht sowieso schon geschehen):

sudo apt-get install git-core

Um die Ansteuerung des Transmitters zu realisieren gibt es ein Projekt namensWiringPi. Dieses installiert ihr euch auf eurem Raspberry Pi wie folgt:

cd
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build

Auch für unseren Zweck, die Steckdosen zu steuern gibt es bereits ein Projekt. Dieses stammt von xkonni und nennt sich Raspberry-Remote. Ihr installiert es euch so:

cd
git clone git://github.com/xkonni/raspberry-remote.git
cd raspberry-remote

Damit es läuft, müsst ihr euch noch die send.cpp kompilieren, also folgendes eintippen:

make send
make demon

installieren eines sniffers

cd
git clone https://github.com/ninjablocks/433Utils.git
cd 433Utils/RPi_utils
make all

Für die Pin Belegung

gpio readall

test des sniffers

./RFSniffer
./codesend 1234

Webinterface

Natürlich ist es etwas umständlich und unkomfortabel, das Ganze immer über das Terminal/eine SSH-Verbindung machen zu müssen. Aber kein Problem! Raspberry-Remote liefert auch gleich ein passendes Webinterface mit. Damit ihr das nutzen könnt, solltet ihr erst mal Apache und PHP installieren auf eurem Raspberry:

sudo apt-get install apache2 php5

Jetzt gehts zum Webinterface, was xkonni direkt mitliefert. Dazu habe ich im Ordner

mkdir /var/www/html/remote

einen Unterordner remote erstellt. Anschließend den Inhalt von ~/raspberry-remote/webinterface dorthin verschoben:

cp -Rf ~/raspberry-remote/webinterface/* /var/www/html/remote

Jetzt muss noch in der

vi /var/www/html/remote/config.php

Datei die IP Adresse des Raspberry Pis angepasst werden: dazu einfach nano verwenden.

Deamon

Nun fehlt noch der Daemon, auf den das PHP-Script des Webinterfaces zugreift. Dazu gehen wir in das Raspberry-Remote Verzeichnis zurück: cd ~/raspberryremote und kompilieren den daemon: make daemon
Nun können wir diesen Starten:

sudo ./daemon &

Das & bewirkt, dass der Prozess im Hintergrund läuft.

Jetzt können wir unser Glück mit dem Webinterface probieren: Dazu rufen wir von einem anderen Rechner/Handy das Webinterface per http://192.168.11.44/remote/ (Eure IP einsetzen) auf. Wenn das geht und dort die verschiedenen Steckdosen sichtbar sind, dann muss man jetzt nur noch in der config.php die Steckdosen mit Namen versehen und evtl. die Codes, etc. anpassen. Die Konfiguration sollte selbsterklärend sein.screenshot_webinterface

Falls ihr eine Fehlermeldung wie „Switch out of range: GET /:XY“ bekommt, keine Sorge! In der daemon.cpp sind standardmäßig nur die Hauscodes 00000 & 00001 & 00010 abgedeckt. Das lässt sich aber einfach ändern. Geht dazu wieder ins Verzeichnis von Raspberry Remote (bei mir /home/pi/raspberry-remote/, also via

cd /home/pi/raspberry-remote/

und öffnet die daemon.cpp mit nano. Darin befindet sich der Eintrag „nPlugs=10;“, welche ihr einfach durch „nPlugs= 1110;“. Anschließend übersudo make daemon neu kompilieren und über sudo ./daemon & wieder starten. Jetzt sollte auch bei euch das Webinterface funktionieren.

 

Quellen:

Let Raspberry Pi’s communicate with each other per 433MHz wireless signals

https://alexbloggt.com/funksteckdosen-raspberry-pi-teil1/

https://alexbloggt.com/funksteckdosen-raspberry-pi-teil2/

 

Des weiteren habe noch einige anderen tolle Projekte gefunden

OK Google, Schalte Liste an -> https://blog.medienman.de/blog/2017/08/20/google-home-steuert-433-mhz-funksteckdosen/

Kategorien
MAC Unix

Effektiv arbeiten mit iTerm2

Fein-Tune-Einstellungen

Starten Sie iTerm, öffnen iTerm > Voreinstellungen oder einfach

cmd + ,

Öffnen Sie den Tab / Bereich mit aktuellen Arbeitsverzeichnis

Unter Profile Tab, gehe zu General Subreiter, Set Arbeitsverzeichnis nach "Wiederverwendung von früheren Sitzung des Verzeichnisses".

Aktivieren Meta Schlüssel

So aktivieren Sie Meta-Taste für Bash Readline- Bearbeitung z.B..

Alt + b

zur vorherigen Wort zu bewegen, unterProfile Tab, gehe zu Keys Subreiter, Set Linke Option-Taste funktioniert wie: nach "+ Esc".

Hotkey iTerm2 umschalten

Unter Keys Tab, im Hotkey Abschnitt, aktivieren "Anzeigen / ausblenden iTerm2 mit einer systemweiten Hotkey" und geben Sie Ihre Tastenkombination, z.B.. ich verwende

Ctrl + Verschiebung + L

Schalterfenster mit der Maus-Cursor

Unter Zeiger, im Verschiedene Einstellungen Abschnitt, aktivieren "Focus folgt Maus".

Handlicher Schnelltasten

Hier ist eine Reihe von Shortcut-Tasten ich häufig verwenden. Sie können für andere Tastenkombinationen im iTerm Menü immer aussehen.

Tab-Navigation

  • Neue Registerkarte öffnen
    cmd + t
  • nächste Registerkarte
    cmd + Verschiebung + ]
  • vorherige Registerkarte
    cmd + Verschiebung + [

Pane Navigation

  • Split-Scheibe links-rechts
    cmd + d
  • Split-Scheibe von oben nach unten
    cmd + Verschiebung + d
  • nächste Scheibe
    cmd + ]
  • vorherige Scheibe
     cmd + [

Suche

  • offene Suchleiste
    cmd + f
  • nächstes finden
    cmd + G

Eingang für alle Scheiben

  • Eingang für alle in der aktuellen Registerkarte Scheiben
    cmd + Alt + ich

Bildschirm löschen

  • klare Puffer
    cmd + k
  • klare Linien (Bash-Befehl)
    Ctrl + l

Zooming / Schriftgröße ändern

  • Toggle-Fenster zu maximieren
     cmd + Alt + =
  • Umschalten Vollbild
    cmd + Eingeben
  • machen Schrift größer
    cmd + +
  • machen Schrift kleiner
    cmd + -

iTerm Liebhaber, habe ich verpasst, etwas aus?

Kategorien
News Raspberry PI Synology Unix Web

letsencrypt auf Apache und Linux

dies ist ein kleiner Leitfaden, wie man Setup letsencrypt auf Apache und auf Linux

Zuerst müssen wir ein letsencrypt Tool zum Download und die Beispielconfig in die richtige Position bewegen

cd / opt
git clone https://github.com/lukas2511/letsencrypt.sh
mkdir -p /etc/letsencrypt.sh
mkdir -p /var/www/letsencrypt.sh/
chown www-data:www-data /var/www/letsencrypt.sh
cp /opt/letsencrypt.sh/docs/examples/config /opt/letsencrypt.sh/config
cp /opt/letsencrypt.sh/docs/examples/domains.txt /opt/letsencrypt.sh/domains.txt

Konfigurieren Sie die letsencrypt Konfigurationsdatei

/opt / letsencrypt.sh / config.sh

BASEDIR ="/etc / letsencrypt.sh /"
bekannte ="/var / www / letsencrypt.sh /"
private_key ="${BASEDIR}/private_key.pem"
HOOK ="${BASEDIR}/hook.sh"
CONTACT_EMAIL ="my@mail.com"

 

theletsencrypt alias für Apache konfigurieren

/etc / apache2 / conf.d / letsencrypt

Alias ​​/.well-known/acme-challenge /var/www/letsencrypt.sh/
Optionen Keine
AllowOverride None
Bestellen Sie erlauben,verweigern
Lassen Sie von allen

die hook.sh Datei konfigurieren zum Nachladen des Apache

/etc / letsencrypt.sh / hook.sh

#!/bin / bash

ob [ ${1} == "deploy_cert" ]; dann
Echo " + Haken: Ein Neustart Apache ..."
/etc / init.d / apache2 reload
sonst
Echo " + Haken: Nichts zu tun..."
fi

Ändern Sie den mod dieser Datei

chmod + x /opt/letsencrypt.sh/hook.sh

Konfigurieren Sie die Domain-Datei

/opt / letsencrypt.sh / domains

www.mosandl.eu
storage.mosandl.eu

laufen letsencrypt

/opt / letsencrypt.sh / dehydriert -c

erstellen crontjob, dass die certs jede Woche erzeugt werden

1  1	* * *	root /opt/letsencrypt.sh/dehydrated -c

vHost

SSLEngine On
SSLCertificateFile /etc/letsencrypt.sh/certs/storage.mosandl.eu/cert.pem
SSLCertificateKeyFile /etc/letsencrypt.sh/certs/storage.mosandl.eu/privkey.pem
SSLCertificateChainFile /etc/letsencrypt.sh/certs/storage.mosandl.eu/chain.pem
SSLCACertificateFile /etc/letsencrypt.sh/certs/storage.mosandl.eu/fullchain.pem
SSLHonorCipherOrder On
SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

Neufassungen

RewriteEngine On
RewriteCond %{REQUEST_URI} !^ /. Gut bekannt
Alias ​​/.well-known/acme-challenge /var/www/letsencrypt.sh/
RewriteCond %{HTTPS} != on
RewriteRule ^ /?(.*) https://%{SERVERNAME}/$1 [R,L]

Proxy-Pass

Proxypass /.well-known !
Alias ​​/.well-known/acme-challenge /var/www/letsencrypt.sh/

Fehler

Kategorien
Unix

systemd – tutorial

Das neue Init-Tool Systemd liegt schon mehreren Distributionen als Alternative zu Upstart oder dem angestaubten Sysvinit bei. Einige von Sysvinit- und Upstart-Distributionen gewohnte Kommandos und Tricks arbeiten durch Kompatibilitätsmaßnahmen auch unter Systemd. Um die Fähigkeiten von Systemd richtig zu nutzen, sollte der Administrator allerdings auch Werkzeuge und Parameter von Systemd kennen.

Wichtigstes Tool zur Interaktion mit Systemd ist das Kommandozeilenprogramm systemctl. Für Änderungen an der Konfiguration oder den Neustart von Hintergrunddiensten erfordert es Root-Rechte; einige Diagnose-Aufrufe dürfen auch einfache Anwender ausführen. Wer das Programm ohne jegliche Parameter aufruft, erhält eine Liste der „Units“, die beim Systemstart anfallende Aufgaben erledigen. Dazu gehört neben dem Einbinden und Prüfen von Datenträgern auch das Starten von Hintergrunddiensten oder das Einrichten von Hardware.

Bei einer Standardinstallation von Fedora 16 listet Systemctl rund hundertsechzig aktive Units in zehn verschiedenen Spielarten. Zu den wichtigsten zählen Service-Units. Sie kümmern sich um Hintergrunddienste, die eine Sysvinit-Distribution typischerweise über Init-Skripte startet. Mount- und Automount-Units binden Dateisysteme ein. Socket-Units legen Sockets an; sie starten indirekt über Abhängigkeiten einen andere Unit, sobald auf den Socket zugegriffen wird. (Eine detaillierte Erläuterung des Unit-Konzepts finden Sie im ersten Teil des Artikels.)

Über einen Parameter kann man Systemctl anweisen, nur Units eines bestimmten Typs aufzulisten, etwa alle Service-Units:

systemctl --type=service

Systemctl leitet seine Ausgabe automatisch an less weiter; über die Pfeiltasten lässt sich nicht nur hoch- und runterscrollen, sondern auch nach rechts, denn dort verbergen sich manchmal weitere Informationen.

Den Systemstart erledigt Systemd mit Units. Die gibt es in verschiedenen Spielarten, die Systemctl separat auflisten kann. VergrößernIn der ersten Spalte der Ausgabe findet sich der Unit-Name. Die zweite Spalte gibt an, ob Systemd die Unit-Definition laden konnte, die dritte, ob die Unit aktiv ist. Inaktive – installierte, aber nicht zum Start vorgesehene – Units gibt das Programm nur mit dem Schalter -a aus; dasselbe gilt für Units, die das Init-System etwa aufgrund eines Fehlers in der Unit-Datei nicht laden konnte.

Spalte vier liefert den aktuellen Status. „exited“ zeigt an, dass sich der Prozess ohne Fehler beendet hat. Das ist zum Beispiel bei Diensten der Fall, die im Hintergrund weiterlaufen – etwa bei der Service-Unit, die aus Kompatibilitätsgründen die von Sysvinit bekannte Datei /etc/rc.local beim Systemstart ausführt. „running“ steht bei Diensten, die im Hintergrund laufen: cron, dbus, sshd, udev und andere.

In der fünften Spalte folgt eine Beschreibung der Unit. Wenn sie mit „LSB“ oder „SYSV“ beginnt, hat Systemd die Unit automatisch erzeugt, um ein traditionelles Init-Skript abzuarbeiten.

Bei Diensten, die nicht gestartet werden konnten oder später abgestürzt sind, steht in der vierten Spalte „failed“ – rot hervorgehoben, sofern die Konsole farbige Ausgabe beherrscht. Das status-Kommando von sytemctl gibt den Zeitpunkt des Abbruchs und den zurückgelieferten Fehlercode des Programms aus, beispielsweise

systemctl status NetworkManager.service

Das Status-Kommando von Systemctl liefert Abbruchzeit und Fehlercode abgestürzter Dienste. Bei einem frisch installierten Fedora 16 listet Systemctl um die 60 Service-Units auf. Darunter sind auch die Login-Prozesse für die Textkonsolen (agetty), denn anders als Sysvinit handhabt Systemd diese über Service-Units wie einen normalen Hintergrunddienst.

Units …

Die Konfigurationsdateien zum Erzeugen der Units, die Systemd mitbringt, liegen in /lib/systemd/system/; eine gleichnamige Datei in /etc/systemd/system/ hat jedoch Vorrang.

Unit-Definition sind meist deutlich kürzer als die klassischen Sys-V-Init-Skripte. Eine Unit-Datei für den Dienst zur Netzwerkzeit-Synchronisierung via NTP ist nur wenige Zeilen lang:

[Unit]
Description=Network Time Service

[Service]
ExecStart=/usr/bin/ntpd -n -u ntp:ntp -g

[Install]
WantedBy=multi-user.target

Alle Unit-Dateien enthalten einen durch [Unit] eingeleiteten Abschnitt mit allgemeinen Einstellungen, darunter eine kurze Beschreibung. Im Abschnitt [Service] folgen dienstspezifische Angaben; bei NTP ist das lediglich das Kommando, um den Dienst zu starten. Falls ein spezieller Befehl zum Beenden nötig ist, kann man diesen über eine ExecStop-Anweisung festlegen. Beim NTP-Daemon ist das unnötig, weil er sich in guter Unix-Tradition durch ein SIGTERM-Signal beenden lässt; das sendet Systemd zum Beenden, wenn kein anderer Befehl spezifiziert ist.

Der Abschnitt [Install] enthält Anweisungen, die Systemd bei der (De-)Installation interpretiert; der Eintrag im NTP-Beispiel bedeutet, dass die Zeitsynchronisation beim Ansteuern des Targets „Multi-User“ aufgerufen werden soll.

… und Targets

Die Targets-Units bieten ein Konzept, das den Runlevels von Sysvinit ähnelt; aus Kompatibilitätsgründen versteht Systemd sogar die Runlevel-Namen zur Ansteuerung äquivalenter Targets. Wie gewohnt kann man daher bei Fedora 16 dem Kernel im Boot-Loader den Parameter single mitgeben; Systemd steuert daraufhin rescue.target an, das eine minimale, dem Single-User-Modus entsprechende Umgebung bietet.

Auch 3 funktioniert, um den Multi-User-Modus ohne grafischen Anmeldemanager anzusteuern. Repräsentiert wird dieser Modus in Systemd durch die Target-Unit multi-user. Um multi-user.target zum Standard zu machen, reicht ein Links:

ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

Soll der grafische Anmeldemanager später doch wieder standardmäßig starten, kann man auf die gleiche Weise graphical.target zum Standardziel erheben; es ist das Äquivalent zum Runlevel 5 von Fedora und OpenSuse. Alternativ zu den alten Runlevel-Bezeichnungen kann man dem Kernel auch die Namen der zu startenden Target-Unit mitgeben:

systemd.unit=multi-user.target

Um im Betrieb eine andere Target-Unit anzusteuern, dient das isolate-Kommando von Systemctl:

systemctl isolate rescue.target

Der Wechsel in das Rescue-Target ist für Administrationsaufgaben interessant, denn dabei beendet Systemd alle User-Logins und Hintergrunddienste, sodass nur noch Systemdienste laufen – etwa jene zur Überwachung von Logical Volumes (lvm2-monitor). Manchmal müssen auch diese für Umbauten heruntergefahren werden, was mit dem Notfall-Modus emergency.target gelingt; hier laufen nur noch die Kernel-Threads.

Verlangen

Das show-Kommando von Systemctl liefert einige Interna zu den laufenden Units und den über sie ausgeführten Arbeiten. Mit ihm lässt sich auch ausgeben, welche Units Systemd beim Ansteuern des Multi-User-Targets aufruft:

systemctl show -p Wants multi-user.target

In der Ausgabe können sich andere Targets finden – beim multi-user.target etwa basic.target. Das wiederum hängt vom sysinit.target ab, das local-fs.targetvoraussetzt. Diese drei Targets kümmern sich um die Grundeinrichtung des Systems; dazu zählen das Einbinden der Dateisysteme und der Start von Udev. Zum Spezifizieren der Abhängigkeit vom Basic-Target enthält die Unit-Konfigurationsdatei multi-user.target folgende Angaben:

Requires=basic.target
After=basic.target

Durch die After-Angabe erfährt Systemd, dass es das Target nicht nur aufrufen, sondern auch den seinen vollständigen Start abwarten muss. Neben Requires gibt es auch noch das schwächere Wants. Darüber angegebene Units ruft Systemd ebenfalls auf, setzt den Start aber auch fort, wenn eine von ihnen nicht startet.

Diese Art der Abhängigkeit lässt sich auch über Links zu Unit-Dateien spezifizieren, die in einem Verzeichnis angelegt werden, dessen Name sich aus dem Namen der target-Unit und angehängtem .wants zusammensetzen, etwa

.../systemd/system/multi-user.target.wants/

Ausknipsen

Wer die NTPD-Service-Unit deaktivieren will, damit die Systemzeit beim Booten nicht via NTP synchronisiert wird, kann das folgenden Befehl tun:

systemctl disable ntpd.service

Dabei macht Systemctl nichts anderes, als den Link auf die Service-Unit-Datei in den Wants-Verzeichnissen zu entfernen; beim Aktivieren eines Dienstes mit enableerstellt das Tool einen Link. Beides kann man auch manuell tun, um Units zu (de)aktiviern.

Wird ein Dienst nicht von einer Unit, sondern über ein traditionelles Init-Skript gestartet, leitet Systemctl die Aufforderung zum Aktivieren an das Programm chkconfig weiter. Bei Fedora ist das etwa der Fall, wenn man Apache installiert und via Systemctl aktiviert.

Das (De)Aktivieren eines Dienstes wirkt sich erst beim nächsten Start oder Beenden des Systems aus. Folgendes Kommando startet einen Dienst einmalig sofort:

systemctl start ntpd.service

Der Parameter stop beendet den Dienst. Mit dem Kommando status liefert Systemctl Information über die Unit, darunter ihren derzeitigen Zustand und den Namen der sie spezifizierenden Datei. Zudem gibt das Programm aus, ob und wie lange der Dienst bereits läuft und welche Prozesse zu ihm gehören; den Hauptprozess weist Systemctl dabei explizit aus.

Über die Gruppenzugehörigkeit lässt sich erkennen, zu welchem Dienst ein Prozess gehört.
Über die Zugehörigkeit zu den von Systemd angelegten Control Groups lässt sich recht einfach herausfinden, welche Prozesse von welchem Dienst gestartet wurden. Die von Systemd angelegte Cgroup-Hierarchie gibt der Befehl systemd-cgls aus; alternativ zeigt ps die Gruppenzugehörigkeit an:ps xaw -eo pid,args,cgroup

Abgesoffen

Falls beim Systemstart Probleme auftreten, an denen Systemd direkt oder indirekt beteiligt scheint, sollten Sie dem Kernel die folgenden Parameter im Boot-Loader mitgeben:

systemd.log_target=kmsg systemd.log_level=debug

Systemd schreibt dann ausführliche Informationen zur Fehlersuche auf die Konsole und in den Puffer der Kernel-Meldungen, den man später mit dmesg auslesen kann.

Zu Systemd gehören die Kommandozeilenprogramme poweroff, halt und reboot; alternativ kann man das System über die gleichlautenden Systemctl-Kommandos herunterfahren oder neu starten. Einen Neustart erreicht man auch mit dem Kommando

systemctl kexec


Das Werkzeug „systemd-cgls“ kann die Control Groups und die ihnen zugeordneten Prozesse anzeigen.
Nach dem Stoppen aller Dienste weist Systemd den laufenden Kernel an, einen zuvor konfigurierten Linux-Kernel direkt zu starten – ohne BIOS-Selbsttest und Boot-Loader. Ist kein Kexec-Kernel konfiguriert, erfolgt ein normaler Neustart.

Ranholen

Bei gängigen Administrationsaufgaben kommt man nur mit den Service- und Target-Units direkt in Kontakt; die anderen Units sind vor allem für spezielle Funktionen von Systemd wichtig oder erledigen beim Systemstart all jene Dinge, um die sich bei Sysvinit- und Upstart-Distributionen distributionsspezifische Skripte gekümmert haben. Dazu gehört etwa das Einbinden der in /etc/fstab spezifizierten Dateisysteme, das Aktivieren von Auslagerungsspeicher oder das gelegentliche Aufräumen des /tmp-Verzeichnisses.

Für einige dieser Arbeiten bringt Systemd eine Automount-Funktion mit, die Pseudo-Einhängepunkte für in /etc/fstab konfigurierte Dateisysteme anlegen kann; tatsächlich eingebunden werden sie allerdings erst beim ersten Zugriff. Das Hinzufügen von „comment=systemd.automount“ in /etc/fstab verwandelt einen beliebigen Mount-Punkt in einen Automount-Punkt. Das kann den Startvorgang beschleunigen und ist beispielsweise für Netzwerkfreigaben nützlich, wenn die Netzverbindung über den NetworkManager erst beim Einloggen eines Users aufgebaut wird.

Ursachenforschung

Über Systemctl kann man Systemd zum Senden eines Signals auffordern, ohne die Prozess-ID des Dienstes zu kennen. Der folgende Befehl versetzt Rsyslogd in den Debug-Modus; dieser wird beendet, wenn man den Befehl ein zweites Mal aufruft:

systemctl kill --signal=USR1 rsyslogd.service

Wenn man die Angabe des zu sendenden Signals weglässt, schickt Systemctl ein normales Term-Signal, woraufhin sich alle Prozesse beenden sollten, die zu einem Dienst gehören.

Systemd bringt ein Programm mit, um den Startvorgang zu visualisieren; die dunkelroten Bereiche weisen die Startphase von Diensten aus. Vergrößern
Der Befehl systemd-analyze gibt aus, wie lange der Systemstart gedauert hat und wie viel Zeit davon auf Kosten von Kernel, Initramfs und die Einrichtung des Userlands durch Systemd entfallen. Der Befehl systemd-analyze blame gibt die Startzeiten der einzelnen Units aus. Zur genaueren Betrachtung des Boot-Prozesses kann das Programm eine SVG-Datei erzeugen, die den Start der Units visualisert:

systemd-analyze plot > plot.svg

Manchmal kommt man so Units auf die Spur, die den Systemstart stark in die Länge ziehen. Einige Hinweise zur korrekten Interpretation dieser Ergebnisse liefert der siebte Teil der Blog-Reihe „Systemd for Administrators“. Die bislang zwölf Teile umfassende Serie enthält auch noch viele andere Tipps und Hinweise für den Praxiseinsatz vom Systemd:

  1. Verifying Bootup
  2. Which Service Owns Which Processes?
  3. How Do I Convert A SysV Init Script Into A systemd Service File?
  4. Killing Services
  5. The Three Levels of „Off“
  6. Changing Roots
  7. The Blame Game
  8. The New Configuration Files
  9. On /etc/sysconfig and /etc/default
  10. Instantiated Services
  11. Converting inetd Services
  12. Securing Your Services

Über die Homepage von Lennart Poettering finden sich zudem zahlreiche weitere Artikel mit Hintergründen zum Init-System. Im dritten „Systemd Status Update“ hat Poettering zudem vor Kurzem einige der Neuerungen aufgelistet, die in den letzten eineinhalb Jahren in Systemd eingeflossen sind.

 

Quelle: http://www.heise.de/open/artikel/Das-Init-System-Systemd-Teil-2-1563461.html

Kategorien
Unix

Neustarten Magic Way

Wenn Sie schon einmal eine Festplatte auf einem Remote-Server fehlschlagen hatte man das Gefühl erinnern sich vielleicht hatten Sie nach dem Versuch, die folgenden Befehle zu erteilen:

    # rebooten
    heftiger schlag: /sbin / reboot: Eingabe / Ausgabe-Fehler
    # shutdown -r now
    heftiger schlag: /sbin / shutdown: Eingabe / Ausgabe-Fehler

Offensichtlich, gibt es ein Problem mit dem Laufwerk. Diese Befehle werden scheitern, weil der Kernel ist nicht in der Lage das zu laden /sbin/reboot und /sbin/shutdown so Binärdateien von der Platte, dass es sie ausführen kann.

Ein fsck beim nächsten Systemstart könnte in der Lage sein, zu korrigieren, was auch immer mit der Scheibe ist falsch, aber zuerst müssen Sie das System zu bekommen, um einen Neustart. Wenn Ihre Maschine in einem Managed-Hosting-Provider befinden, dann könnten Sie einen Neustart Ticket einreichen, aber Sie müssen warten, bis jemand die Verantwortung übernehmen.

Wäre es nicht schön, wenn es eine Möglichkeit gäbe, den Kernel zu fragen, ohne neu zu starten, um die fehlerhafte Laufwerk zugreifen? Gut, da ist ein Weg, und es ist bemerkenswert einfach.

Das „Magie SysRq Schlüssel“ bietet eine Möglichkeit, Befehle direkt an den Kernel durch das / proc-Dateisystem zu senden. Es wird über einen Kernel-Kompilierung-Option aktiviert, CONFIG_MAGIC_SYSRQ, die scheint auf den meisten Distributionen Standard zu sein. Zuerst müssen Sie die Magie SysRq Option aktivieren:

Echo 1 > / Proc / sys / kernel / sysrq

Wenn Sie bereit sind, starten Sie das Gerät neu zu starten Sie einfach die folgenden:

echo b> / proc / sysrq-Trigger

Dies wird nicht versucht, auszuhängen oder Sync-Dateisysteme, so sollte es nur verwendet werden, wenn es absolut notwendig, aber wenn Ihr Antrieb bereits dann versagt das kann nicht ein Anliegen sein.

Neben dem System die sysrq Trick, um einen Neustart kann verwendet werden, um Speicherinformationen an die Konsole zu entleeren, Synchronisieren Sie alle Dateisysteme, remount alle Dateisysteme im Read-Only-Modus, senden SIGTERM oder SIGKILL an alle Prozesse außer init, oder Ausschalten der Maschine vollständig, unter anderem.

Ebenfalls, anstelle von Echo in /proc/sys/kernel/sysrq jedes Mal, können Sie die Magie SysRq Taste beim Booten des Systems unter Verwendung von sysctl aktivieren, wo unterstützt:

Echo "kernel.sysrq = 1" >> /etc/sysctl.conf

Wenn Sie möchten mehr über Magie SysRq zu lernen, können Sie das lesen sysrq.txt Datei in der Kernel-Dokumentation.

Kategorien
Unix

Kartenserver Aktien über sshfs

Installation auf Debian

apt-get install sshfs
mkdir / media / xxx
ssh-keygen
ssh-copy-id -i ~ / .ssh / id_rsa.pub username@xxx.com

vi /etc/rc.local (Diese Datei wird nach Netzwerk ausführen aktiviert)

sshfs -o allow_other xxx @ xxx:/var / www / / media / xxx
sshfs -o allow_other xxx @ xxx:/var / www / / media / xxx1