Das Init-System Systemd, Teil 2

 

Aktuelle Versionen von Fedora, OpenSuse, Mandriva und einigen anderen Distributionen starten das System bereits mit Systemd. Das neue Init-System bringt eigene Werkzeuge zur Konfiguration und Diagnose mit und erfordert andere Kniffe als Sysvinit, wenn es Probleme gibt.

 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.
Den Systemstart erledigt Systemd mit Units. Die gibt es in verschiedenen Spielarten, die Systemctl separat auflisten kann.

In 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.
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.

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.

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.

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.target voraussetzt. 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/

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 enable erstellt 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 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 

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.
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.

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.

Ü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.
Systemd bringt ein Programm mit, um den Startvorgang zu visualisieren; die dunkelroten Bereiche weisen die Startphase von Diensten aus.

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. (thl) 

 

[ Source:  https://www.heise.de/ct/artikel/Das-Init-System-Systemd-Teil-2-1563461.html?seite=all ]

 

systemd Boot Process

What is systemd?

systemd is a suite of basic building blocks for a Linux system. It provides a system and service manager that runs as PID 1 and starts the rest of the system.

https://www.freedesktop.org/wiki/Software/systemd

systemd is now the init process running as PID 1 as indicated above. /sbin/init was the actual init process of Linux (also known as System V init boot system), it is now replaced with /usr/lib/systemd in many Linux distributions.

After the kernel is initialized, it launches systemd process. Detailed Linux boot process is described in here. This post only handles in-systemd details.

systemd provides parallelized boot, uses sockets and d-bus activation for starting services, offers on-demand daemon launch, etc. We can easily attach our own daemons to systemd by creating service scripts in either /lib/systemd/system or /etc/systemd/system directories. For the daemons to be automatically and normally launched, we need to acknowledge the systemd launch process, which this post will investigate more.

systemd boot process in Linux

The following chart is a structural overview of well-known systemd units and their position in the boot-up logic, according to freedesktop. The chart comes from here.

systemd-boot{: .center-image width=“900px”}

The first target of systemd to be launched is default.target, which is typically a symbolically linked to graphical.target or multi-user.target (depending on whether system is configured for a GUI or only a text console). If you want to add your own system service into systemd hierarchy, it would be usally be added multi-user.target, like for example:

/etc/systemd/system/myservice.service

[Unit]
Description=My Service

[Service]
ExecStart=/usr/bin/echo 'Hello'

[Install]
WantedBy=multi-user.target

as illustrated in freedesktop systemd.target manual.

timers.target, paths.target, and sockets.target are special targets for the initialization of timers, paths, and sockets, respectively. These targets have default dependencies: target unites are automatically configured with:

  • After=sysinit.target,
  • Requires=sysinit.target,
  • Before=shutdown.target,
  • and Conflicts=shutdown.target.

Those default dependencies can be ignored with the following statement in the unit: DefaultDependencies=no. For example, udev.service uses two sockets: systemd-udevd-control.socket and systemd-udevd-kernel.socket. In the chart above, udev.service should be initialized in the stage before sysinit.target. Therefore, all udev.service, systemd-udevd-control.socket, and systemd-udevd-kernel.socket have DefaultDependencies=no statement to avoid those default dependencies.

There are more special systemd units, such like network.target or network-online.target, by default freedesktop does not show which position those targets sit in.

 

[ Source:  https://insujang.github.io/2018-11-22/systemd-boot-process/ ]

Systemd Boot Process a Close Look in Linux

 

The way Linux system boots up is quite complex and there has always been a need to optimize the way it works. The traditional boot process of the Linux system is mainly handled by the well know init process (also known as SysV init boot system).

Systemd, on the other hand is an initialization system and service manager wrote by Lennart Poettering and Kay Sievers. Many major Linux distributions have now adopted systemd as the default init system.

In this tutorial, I will go through the Linux system boot process with systemd.

Understanding Systemd

Systemd (System Manager Daemon), originally developed under GNU General Public License, is now under GNU Lesser General Public License. Reducing the boot time and computational overhead is the main objective of developing the Systemd.

One of the core features of Systemd is that it supports post-boot scripts of SysV Init ie backward compatible with SysV init scripts.

The way systemd handles the start up process is quite neat and much optimized as compared to the traditional init based system.

Let’s review some of the core features of Systemd.

  • The boot process is much simpler as compared to the init
  • Systemd provides concurrent and parallel process of system boot so it ensures better boot speed
  • Processes are tracked using control groups, not by PIDs
  • Improved ways to handle boot and services dependencies.
  • Capability of system snapshots and restore
  • Monitoring of started services ; also capabale of restarting any crashed services
  • Includes systemd-login module to control user logins.
  • Ability to add and remove components
  • Low memory foot prints and ability for job scheduling
  • Journald module for event logging and syslogd module for system log.

Systemd handles system shutdown process in a well organized way as well. It has three script located inside '/usr/lib/systemd/' directory, named systemd-halt.service, systemd-poweroff.service, systemd-reboot.service. These scripts are executed when a user chooses to shutdown, reboot or halt Linux system.

In the event of shutdown, the systemd first un-mount all file systems and disabled all swap devices, detaches the storage devices, and kills remaining processes.

systemd boot chart

Boot process with Systemd

Let’s check Linux system boot process when it is using systemd as boot and services manager.

For the sake of simplicity, we are listing the process in steps below:

01.  The very first steps when you power on your system is the  BIOS initialization. BIOS reads the boot device settings, locates and hands over control to MBR (assuming hard disk is set as first boot device).

02.  MBR reads information from Grub or LILO boot loader and initializes the kernel.  Once kernel loaded into initial RAM disk, it begins the systemd initialization.

Systemd handles boot and services management process using “targets”. The ”target" files in systemd are used for grouping different boot units and start up synchronization processes.

03.  The very first target executed by systemd is default.target. But default.target is actually a symlink to graphical.target.  Symlink in linux works just like shortcuts in Windows. Graphical.target file is located at /usr/lib/systemd/system/graphical.target path. We have shown the contents of graphical.target file in the following screenshot.

graphical target

04. At this stage, multi-user.target has been invoked and this target keeps its further sub-units inside  “/etc/systemd/system/multi-user.target.wants” directory. This target sets the environment for multi user support. None root users are enabled at this stage of boot up process. Firewall related services are started on this stage of boot as well.

multi-user target

"multi-user.target" passes control to another layer “basic.target”.

Basic Target
05. "basic.target" unit is the one that starts usual services specially graphical manager service. It uses /etc/systemd/system/basic.target.wants directory to decide which services need to be started, basic.target passes on control to sysinit.target.

Sysint Target

06. "Sysinit.target" starts important system services like file system mounting, swap spaces, and devices, kernel additional options etc. Sysinit.target passes on startup process to local-fs.target. The contents of this target unit are shown in the following screenshot.

local FS Target
07. local-fs.target - no user-related services are started by this target unit, it handles core low-level services only. This target is the one performing actions on the basis of '/etc/fstab' and '/etc/inittab' files.

Analyzing System Boot Performance

Systemd offers tools to identify and troubleshoot boot related issues or performance concerns. Systemd-analyze is a built-in command which lets you examine boot process. You can find out the units which are facing errors during boot up and can further trace and correct boot component issues. Some useful systemd-analyze commands are listed below.

systemd-analyze time shows the time spent in kernel,  and normal user space.

$ systemd-analyze time

Startup finished in 1440ms (kernel) + 3444ms (userspace)

systemd-analyze blame prints a list of all running units, sorted  by the time taken by then to initialize, in this way you can have idea of which services are taking long time to start during boot up.

$ systemd-analyze blame

2001ms mysqld.service
234ms httpd.service
191ms vmms.service

systemd-analyze verify shows if there are any syntax errors in the system units. Systemd-analyze plot can be used to write down whole startup process to a SVG formate file. Whole boot process is very lengthy to read, so using this command we can dump the output of whole boot processing into a file and then can read and analyze it further. The following command will take care of this.

systemd-analyze plot > boot.svg

Systemd Controversies

Systemd has not been lucky to receive love from everyone, some professionals and administrators have different opinions on its working and developments.  Per critics of Systemd, it’s “not Unix-like” because it tried to replace some system services.

Some professionals don’t like the idea of using binary configuration files as well. It is said that editing systemd configuration is not an easy tasks and there are no graphical tools available for this purpose.

Conclusion

With that said, I hope you enjoyed reading this tutorial on systemd boot process step. Please feel free to leave your suggestions in the below comment section.

[ Source:  https://linoxide.com/linux-how-to/systemd-boot-process/ ]

Windows 7: .cpl, .msc und andere Befehle

Viele Windows 7 Programme und Funktionen lassen sich direkt über Befehle aufrufen, die häufig mit .cpl oder .msc enden.

Windows-Taste + RDiese Funktionen lassen sich aufrufen, indem man den Ausführen-Dialog mit Windows-Taste + R startet, den Befehl eingibt und auf OK klickt.

 

appwiz.cplSystemsteuerung > Programme und Funktionen
bthprops.cplBluetooth (falls vorhanden)
calcWindows Rechner
certmgr.mscZertifikate – Aktueller Benutzer
charmapZeichentabelle
cleanmgrDatenträgerbereinigung
siehe auch Windows 7 Datenträgerbereinigung
cliconfigSQL Server-Clientkonfigurationsprogramm
cmdEingabeaufforderung
collab.cplPersonen in meiner Umgebung
colorcplWindows Farbverwaltung
compmgmt.msc
compmgmtlauncher
Computerverwaltung
computerdefaultsProgrammzugriff und Computerstandards festlegen
controlSystemsteuerung
control admintoolsSystemsteuerung > Verwaltung
control appwiz.cpl,,1Systemsteuerung > Programme > Programme beziehen
(Programm vom Netzwerk installieren)
control appwiz.cpl,,2Systemsteuerung > Programme und Funktionen > Windows-Funktionen aktivieren oder deaktivieren
Anwendungsbeispiel: Windows 7 Internet Explorer deaktivieren
control appwiz.cpl,,3Systemsteuerung > Standardprogramme > Programmzugriff und Computerstandards festlegen
control colorFensterfarbe und -darstellung
control desktopSystemsteuerung > Anzeige
control foldersSystemsteuerung > Ordneroptionen
control fontsSystemsteuerung > Schriftarten
conrol keyboardSystemsteuerung > Tastatur (Eigenschaften von Tastatur)
control keymgr.dllSystemsteuerung > Anmeldeinformationsverwaltung
control mouse
main.cpl
Systemsteuerung > Maus (Eigenschaften von Maus)
Artikel zum Thema Maus
control netconnections
ncpa.cpl
Systemsteuerung > Netzwerk- und Freigabecenter > Adaptereinstellungen ändern
(Netzwerkverbindungen)
control powercfg.cpl,,1Energieoptionen > erweiterte Einstellungen
siehe auch Windows 7 Aktion beim Notebook zuklappen ändern
control printersSystemsteuerung > Geräte und Drucker
control schedtasks
taskschd.msc
Aufgabenplanung
siehe auch Windows 7 Aufgabenplanung
control userpasswords2
netplwiz
Systemsteuerung > Benutzerkonten
siehe auch Windows 7 Standardbenutzer anlegen
credwizGespeicherte Benutzernamen und Kennwörter sichern/ wiederherstellen
dcomcnfg
comexp.msc
Komponentendienste
desk.cplSystemsteuerung > Anzeige > Auflösung anpassen
dfrguiDefragmentierung
Artikel zum Thema Defragmentieren
dialerWählhilfe
diskmgmt.mscDatenträgerverwaltung
dxdiagDirectX-Diagnoseprogramm
eudceditEditor für benutzerdefinierte Zeichen
eventvwrSystemsteuerung > Verwaltung > Ereignisanzeige
explorerWindows Explorer
firewall.cplSystemsteuerung > Windows-Firewall
fontsöffnet den Systemordner Windows\Fonts
fsmgmt.mscFreigegebene Ordner
gpedit.mscEditor für lokale Gruppenrichtlinien
hdwwiz.cpl
devmgmt.msc
Systemsteuerung > Geräte-Manager
siehe auch Windows 7 Hardware im Geräte-Manager prüfen
iexpressIExpress Wizard
inetcpl.cplSystemsteuerung > Internetoptionen (Eigenschaften von Internet)
intl.cplSystemsteuerung > Region und Sprache
joy.cplGamecontroller (Joystick)
logoffmeldet aktiven Benutzer sofort ab
lpksetupAnzeigesprache installieren / deinstallieren
lusrmgr.msclokale Benutzer und Gruppen
magnifystartet Bildschirmlupe
mblctrWindows-Mobilitätscenter (nur auf Notebooks verfügbar)
mdschedWindows-Speicherdiagnose
migwizWindows-EasyTransfer
mmcMicrosoft Management-Konsole, Konsolenstamm
mmsys.cplSystemsteuerung > Sound
mobsyncSystemsteuerung > Synchronisierungscenter
mrtMicrosoft Windows-Tool zum Entfernen bösartiger Software
msconfigSystemkonfiguration
msinfo32Systeminformationen
mspaint
pbrush
Microsoft Paint
mstscRemotedesktopverbindung
notepadWindows Editor (Notepad)
oskBildschirmtastatur
siehe auch Windows Bildschirmtastatur aufrufen
perfmon
perfmon.msc
Leistungsüberwachung
powercfg.cplSystemsteuerung > Energieoptionen
regeditRegistrierungseditor
rsop.mscRichtlinienergebnissatz
rstruiSystemwiederherstellung
Artikel zum Thema Systemwiederherstellung
sdcltSystemsteuerung > Sichern und Wiederherstellen
secpol.msclokale Sicherheitsrichtlinie
services.mscDienste
shrpubwAssistent zum Erstellen von Ordnerfreigaben
shutdownfährt Windows herunter
sidebar /showgadgetsSystemsteuerung > Minianwendungen
sigverifDateisignaturverifizierung
sluiWindows Aktivierung
sndvolLautstärkemixer
sysdm.cplSystemsteuerung > System > Einstellungen ändern (Systemeigenschaften)
SystemPropertiesAdvancedSystemeigenschaften, Reiter Erweitert
SystemPropertiesComputerNameSystemeigenschaften, Reiter Computername
SystemPropertiesDataExecutionPreventionSystemeigenschaften, Reiter Erweitert: Leistung > Einstellungen > Leistungsoptionen, ReiterDatenausführungsverhinderung
SystemPropertiesHardwareSystemeigenschaften, Reiter Hardware
SystemPropertiesPerformanceSystemeigenschaften, Reiter Erweitert: Leistung > Einstellungen > Leistungsoptionen, Reiter VisuelleEffekte
SystemPropertiesProtectionSystemeigenschaften, Reiter Computerschutz
siehe auch Windows 7 Verwaltung der Systemwiederherstellung
SystemPropertiesRemoteSystemeigenschaften, Reiter Remote
TabletPC.cplStift- und Fingereingabe
taskmgrWindows Task-Manager
telephon.cplTelefon und Modem
telnetMicrosoft Telnet
timedate.cplSystemsteuerung > Datum und Uhrzeit
Artikel zum Thema Systemzeit
utilman
control access.cpl
Systemsteuerung > Center für erleichterte Bedienung
verifierTreiberüberprüfungs-Manager
waböffnet den Ordner Kontakte des angemeldeten Benutzers
wabmigIn Windows-Kontakte importieren
wf.mscWindows-Firewall mit erweiterter Sicherheit
wiaacmgrstartet Windows Scan
winverInfo Windows Version
wmimgmt.mscKonsolenstamm\WMI-Kontrolle
wmplayer
dvdplay
Windows Media Player
writeWindows WordPad
wscui.cplSystemsteuerung > Wartungscenter
wuappWindows Update
Artikel zum Thema Windows Update

 

 [ Source: https://bits-meet-bytes.de/windows-7-cpl-msc-und-andere-befehle/ ]


HMI mit OPC UA Client?

 https://www.exorint.com/de/product/ex721

Als Gateway mit bis zu 3 Ethernet-Netzwerken, OPC UA pub/sub*-Server und -Client, zukunftsweisender TSN-Konnektivität* und mehreren Protokollen 


https://www.exorint.com/de/blog/die-einf%C3%BChrung-von-opc-ua-pub/sub-publish-subscribe-und-seine-bedeutung-f%C3%BCr-hersteller

https://grafana.com/

 

R4000 - HMI

https://www.saia-pcd.com/de-de/produkte/bedienen-und-beobachten/bediengerate/standard-bediengerate/saia-pcd-7-d-4-xxxxx-f/

Formatting Date and Time (with Culture)

 

In the previous tip we illustrated how Get-Date can take a format string and convert DateTime values to strings. The string conversion always uses your local language though. That might not always be what you need. Let’s check out the problem, and a solution for it:

Here is an example outputting the weekday name for Christmas Eve in 2018:

$christmasEve = Get-Date -Date '2018-12-24'

Get-Date -Date $christmasEve -Format '"Christmas Eve in" yyyy "will be on" dddd.'

Clearly, the conversion was done on a German system, so the result uses the German name of the weekday:

 
Christmas Eve in 2018 will be on Montag.
 

If your script was supposed to create output for a different language, you might want to output the days of the week in English (or any other language). To take control over the language, you need to be aware of two things: first, the formatting option provided by Get-Date and -Format is simply a wrapper around the generic .NET method ToString(), so you can as well run this and get the same result:

$christmasEve = Get-Date -Date '2018-12-24'

$christmasEve.ToString('"Christmas Eve in" yyyy "will be on" dddd.')

Second, the ToString() method has many of overloads, one of which accepts any object implementing the IFormatProvider interface, which happens to include “CultureInfo” objects:

 
PS> $christmasEve.ToString

OverloadDefinitions                                                                                     
-------------------                                                                                     
string ToString()                                                                                       
string ToString(string format)                                                                          
string ToString(System.IFormatProvider provider)                                                        
string ToString(string format, System.IFormatProvider provider)                                         
string IFormattable.ToString(string format, System.IFormatProvider formatProvider)                      
string IConvertible.ToString(System.IFormatProvider provider)   
 

Here is a solution to output the days of the week in English, regardless of your own operating system language:

$christmasEve = Get-Date -Date '2018-12-24'
$culture = [CultureInfo]'en-us'
$christmasEve.ToString('"Christmas Eve in" yyyy "will be on" dddd.', $culture)
 
Christmas Eve in 2018 will be on Monday. 
 

Start playing with other locales, and for example find out what “Monday” is in Chinese or Thai:

$christmasEve = Get-Date -Date '2018-12-24'
$culture = [CultureInfo]'zh'
$christmasEve.ToString('"Monday in Chinese: " dddd.', $culture)
$culture = [CultureInfo]'th'
$christmasEve.ToString('"Monday in Thai: " dddd.', $culture)
 
Monday in Chinese:  星期一.
Monday in Thai:  จันทร์.
 

 [ Source: https://community.idera.com/database-tools/powershell/powertips/b/tips/posts/formatting-date-and-time-with-culture ]

 

How can I launch a systemd service at startup before another systemd service starts?

 

There are 3 main properties for managing dependencies. I'll try to briefly explain the difference but you can find more details at [Unit] Section Options | freedesktop.org

  1. After=

    This option only sets the order of the units, it doesn't guarantee that the service has finished starting up.

  2. Wants=

    This option allows your unit to start only after another unit has finished starting up. (Doesn't matter if it started successfully or not)

  3. Requires=

    Just like Wants=, however, this will make your unit start only after the dependencies have successfully started.

You can also use the inverse of each of those options.

  1. After= is inversed by Before=
  2. Wants= is inversed by WantedBy=
  3. Requires= is inversed by RequiredBy=

To fix your problem, you need to change your mount service to:

[Unit]
Description=MountSmokeScreen
After=network.target
Before=sonarr.service radarr.service

[Service]
Type=oneshot
ExecStart=/home/samsepioldoloresh4ze/bin/check.mount
TimeoutStopSec=20
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target sonarr.service radarr.service

Or you can add Wants=mountgdrive.service to the sonarr.service and radarr.service units.

You can do that without modifying the default files by running the following (You need to do the same for radarr.service):

systemctl edit sonarr.service

And insert the following:

[Unit]
Wants=mountgdrive.service

Note: You can replace Wants= with Requires or WantedBy= with RequiredBy= if you don't want the two services to start at all if mountgdrive.service fails (Though Wants= is usually enough and even recommended in the docs).

EDIT: The WantedBy and RequiredBy options can only be used under the [Install] section. (Thanks @Yankee)

 

[Source:  https://askubuntu.com/questions/1024916/how-can-i-launch-a-systemd-service-at-startup-before-another-systemd-service-sta ]


Datumsformat

 

 

Vordefinierte Formate

default
dd. MMM yyyy HH:mm
w3c (ab Version 2.8)
Datumsformat W3C (2013-10-31T11:56:40+01:00) kann nicht mit den unten beschriebenen Mitteln definiert werden, da Zeitzone (Z) keinen Doppelpunkt enthält.

Ausdrücke

Symbol Bedeutung Präsentation Beispiel
G Ära Text AD
yy Jahr zweistellig Nummer 07
yyyy Jahr vierstellig Nummer 2007
M Monat im Jahr Nummer 7
MM Monat im Jahr mit 0 Nummer 07
MMM Monat im Jahr kurz Text Sep
MMMM Monat im Jahr lang Text September
d Tag im Monat Nummer 26
h Stunde (1 – 12) Nummer 9
H Stunde am Tag (0 – 23) Nummer 0
m Minute der Stunde Nummer 13
s Sekunde der Minute Nummer 22
S Millisekunde Nummer 257
E Tag der Woche kurz Text Mi
EEEE Tag der Woche lang Text Mittwoch
D Tag im Jahr Nummer 304
F Tag der Woche im Monat Nummer 3
w Woche im Jahr Nummer 12
W Woche im Monat Nummer 3
a am- und pm-Text Text AM
k Stunde am Tag (1 – 24) Nummer 24
K Stunde (0 – 11) Nummer 0
z Allgemeine Zeitzone Text GMT+02:00
Z Zeitzone nach RFC 822 Text +0200
XXX Zeitzone nach RFC 3339 (ab Java 7) Text +02:00
' Zeichen für unbehandelten Text Trennzeichen Hallo Welt

einzelnes Hochkomma Literal '

Beispiele

Formatierungsstring Ergebnis Kommentar
yyyy.MM.dd G 'um' hh:mm:ss z 2004.07.23 n. Chr. um 09:15:53 CEST
EEE, MMM d, yy Fr, Jul 23, '04
H:mm a 9:16 AM
hh 'oclock' a, zzzz 09 o'clock AM, Zentraleuropäische Sommerzeit
K:mm a, z 9:17 AM, CEST
yyyy. MMMMM. dd GGG hh:mm aaa 2004. Juli. 23 n. Chr. 09:18 AM
'EEE, dd MMM yyyy hh:mm:ss Z','en' Thu, 26 Nov 2009 12:00:00 +0100 Notation für RSS-Feeds

 [ Source: https://wiki.sitepark.com/index.php/Datumsformat ]


 

Datei in einer windows.wim image ändern

 Um Dateien in einer Datei.wim zu ändern, und zwar nicht im 1. Index sondern 2. öffnet man Powershell (ich habs jetzt im admin Modus gestart...