Benutzer-Werkzeuge

Webseiten-Werkzeuge


server_und_serverdienste:systemd

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
server_und_serverdienste:systemd [2021/03/04 14:42] loisserver_und_serverdienste:systemd [2025/05/18 08:19] (aktuell) loma
Zeile 1: Zeile 1:
 ====== Systemd ====== ====== Systemd ======
- +Du möchtest dich gerne für unsere Hilfe erkenntlich zeigen 8-oGerneWir bedanken uns bei dir für deine Spende! 🙏 \\ 
-Hauseigenes Apt-Repo: [[https://apt.iteas.at]]    [[https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=KE592Y5993ZKW|{{:wiki:btn_donatecc_lg.gif|}}]]+[[https://www.paypal.com/donate/?hosted_button_id=JTFYJYVH37MNE|{{:spenden.gif|}}]] \\ 
 +\\ 
 +Zum frei verfügbaren [[:apt-repository|Apt-Repository]] 
 +\\ 
 +GITLAB: [[https://git.osit.cc|{{:gitlab_logo.png?nolink&60|}}]]
 \\ \\
 \\ \\
Zeile 7: Zeile 11:
  
  systemctl edit --full rc-local  systemctl edit --full rc-local
 +
 +Um den Defaulteditor VI von SystemD zu überschreiben bedient man sich diesem Befehl:
 + EDITOR=nano systemctl edit --full rc-local
 +
 +Hier wird das komplette Service kopiert und wird von Updates des Systems nicht weiterhin berührt. Dies kann je, nachdem zu irgendwann auch zu Problemen führen. Deshalb gibt es auch eine andere Variante wo die Files virtuell verschmolzen werden:
 + EDITOR=nano systemctl edit apache2
  
 Oder wenn es ein komplett neues Unitfile ist: Oder wenn es ein komplett neues Unitfile ist:
Zeile 31: Zeile 41:
 ===== Timeout beim Beenden eines Services ===== ===== Timeout beim Beenden eines Services =====
  
-Sehr nützlich wenn durch z.B. nicht mehr erreichen von Services wie NB's - WLAN Dienste ihr maximales Timeout erreichen würden.+Sehr nützlichwenn durch z.B. nicht mehr erreichen von Services wie NB's - WLAN Dienste ihr maximales Timeout erreichen würden.
      
   [Unit]   [Unit]
Zeile 61: Zeile 71:
  
 ===== Systemdservices über Remote ausführen ===== ===== Systemdservices über Remote ausführen =====
-Mit Systemd ist es sehr bequem möglich Dinge zu organisieren ohne das man direkt am Host ist. z.b.+Mit Systemd ist es sehr bequem möglich Dinge zu organisierenohne das man direkt am Host ist. z.b.
 <code> <code>
 systemctl -H root@myhost.supertux.bla status apache2 systemctl -H root@myhost.supertux.bla status apache2
Zeile 73: Zeile 83:
  
 ===== Mounten mit Systemd - FSTAB ruhe in Frieden ===== ===== Mounten mit Systemd - FSTAB ruhe in Frieden =====
 +
 +==== Systemd Mount mit NFS ====
  
 __Testsystem: Debian 10/Proxmox 6.3__ __Testsystem: Debian 10/Proxmox 6.3__
Zeile 80: Zeile 92:
 Hier als Beispiel ein einfacher Mount einer lokalen HDD. Als erstes legst du ein sogenanntes Unit-File an. Der Mountpoint wird dabei automatisch erstellt. Hier als Beispiel ein einfacher Mount einer lokalen HDD. Als erstes legst du ein sogenanntes Unit-File an. Der Mountpoint wird dabei automatisch erstellt.
  systemctl edit -f -l "/mnt/datastore/HDD-extern-OSIT"  systemctl edit -f -l "/mnt/datastore/HDD-extern-OSIT"
-Wie du siehst muss der Name der exakte Mountpoint sein. Nun befüllst du das File mit diesem Inhalt:+ 
 +Um den Defaulteditor VI von SystemD zu überschreiben bedient man sich diesem Befehl: 
 + EDITOR=nano systemctl edit -f -l "/mnt/datastore/HDD-extern-OSIT" 
 + 
 +Wie du siehstmuss der Name der exakte Mountpoint sein. Nun befüllst du das File mit diesem Inhalt:
 <code> <code>
 [Install] [Install]
Zeile 94: Zeile 110:
 Where=/mnt/datastore/HDD-extern-OSIT Where=/mnt/datastore/HDD-extern-OSIT
 </code> </code>
-Mit dem nächsten Befehl hast eine tolle Übersicht für alle Mountpoints die es gibt, und ob diese im Autostart sind oder nicht.+Und NFS4: 
 +<code> 
 +[Install] 
 +WantedBy=multi-user.target 
 + 
 +[Unit] 
 +Description=Mount datatstore under /home/mydata 
 +Requires=network.target 
 +Requires=NetworkManager.service 
 +Requires=network-online.target 
 + 
 +[Mount] 
 +Options=rw,_netdev,auto,acl,exec,intr,bg,nfsvers=4,minorversion=2,x-systemd.device-timeout=60,x-systemd.mount-timeout=60 
 +Type=nfs4 
 +What=myhostserver.lan:/ssd-pool/mydatastore 
 +Where=/home/mydata 
 +# TimeoutSec=60 
 +</code> 
 + 
 + 
 +Mit dem nächsten Befehl hast eine tolle Übersicht für alle Mountpointsdie es gibt, und ob diese im Autostart sind oder nicht.
  systemctl list-unit-files -t mount  systemctl list-unit-files -t mount
 <code> <code>
Zeile 133: Zeile 169:
 oder auch: oder auch:
  systemctl edit -l "/mnt/datastore/HDD-extern-OSIT"  systemctl edit -l "/mnt/datastore/HDD-extern-OSIT"
 +
 +==== Systemd Mount mit Samba ====
 +
 +__Testsystem: Ubuntu 20.04, 22.03LTS auf Proxmox LXC__
 +
 +Dies gestaltet sich sehr ähnlich wie NFS. Lediglich ein Paket und die Authentifizierung kommt dazu.
 + apt install cifs-utils -dy
 +Danach erstellen wir unser Unitfile, und aktivieren es:
 + EDITOR=nano systemctl edit -f -l "/data-docs"
 +
 +<code>
 +[Unit]
 +Description=samba mount for sambafiles
 +Requires=systemd-networkd.service
 +After=network-online.target
 +Wants=network-online.target
 +
 +[Mount]
 +What=//yourserver.lan/data-docs
 +Where=/media-kodi
 +Options=credentials=/root/.smbcredentials,auto,vers=3.0,uid=2344,gid=2344,file_mode=0777,dir_mode=0777
 +Type=cifs
 +TimeoutSec=30
 +
 +[Install]
 +WantedBy=multi-user.target
 +</code>
 +Nun noch SystemD reloaden und den Mount aktivieren:
 +<code>
 +systemctl daemon-reload
 +systemctl enable "data\x2ddocs.mount"
 +</code>
 +Nun kann das Systemd-Service getartet werden, und somit wird auch das Laufwerk eingehängt.
 + systemctl start "data\x2ddocs.mount"
  
 Für die Erweiterung deines Unitfiles empfehle ich [[https://wiki.ubuntuusers.de/systemd/Units/|diesen Artikel]] und auch [[https://wiki.ubuntuusers.de/systemd/Mount_Units/|diesen]] auf Ubuntuusers.  Für die Erweiterung deines Unitfiles empfehle ich [[https://wiki.ubuntuusers.de/systemd/Units/|diesen Artikel]] und auch [[https://wiki.ubuntuusers.de/systemd/Mount_Units/|diesen]] auf Ubuntuusers. 
 +
 +===== Systemd Autostart =====
 +Hier ein Beispiel für ein WOL Script das beim Boot ausgeführt wird, aber erst wenn der Server online ist.
 + systemctl edit -f -l wol-at-boot.service
 +Inhalt:
 +<code>
 +[Unit]
 +Description=execute Wake-up on LAN
 +
 +Wants=network.target
 +After=syslog.target network-online.target
 +
 +[Service]
 +Type=oneshot
 +ExecStart=/etc/cron.hourly/wol.sh
 +
 +[Install]
 +WantedBy=multi-user.target
 +</code>
 + systemctl enable wol-at-boot.service
 + systemctl daemon-reload 
 +
 +===== Optional: Abhängigkeit Netzwerk =====
 +Gerade beim Mount von Laufwerken kommt immer wieder mal das Thema, auf das beim Zeitpunkt des Mounts das Ziel noch nicht erreichbar ist. Manchmal hilft da auch kein "Requires" für das Netzwerkservice. Abhilfe kann man sich mit einem kleinen Trick schaffen. In dem man ein System-Service generiert das einen simplen Pincheck zum (einen) Zielserver im Netzwerk ausführt und prüft ob der Zielserver für den Mount erreichbar ist. Und erst dann wird der Mount gestartet. 
 +
 + EDITOR=nano systemctl edit -f -l wait-for-ping.service
 +
 +Mit dem folgenden Inhalt (Zieladresse muss angepasst werden):
 +<code>
 +[Unit]
 +Description=Blocks until it successfully pings virtu01
 +After=network-online.target
 +
 +[Service]
 +ExecStartPre=/usr/bin/bash -c "while ! ping -c1 192.168.1.4; do sleep 1; done"
 +ExecStart=/usr/bin/bash -c "echo good to go"
 +RemainAfterExit=yes
 +
 +[Install]
 +WantedBy=multi-user.target
 +</code>
 +
 +Speicher und aktivieren: 
 + systemctl enable --now wait-for-ping.service
 +
 +Dieses Service fügt man jetzt als Abhängigkeit im Systemd-Mount hinzu. Z.B.
 +<code>
 +[Install]
 +WantedBy=multi-user.target
 +
 +[Unit]
 +Description=Mount datatstore under /home/mydata
 +Requires=network.target
 +Requires=NetworkManager.service
 +Requires=network-online.target
 +After=wait-for-ping.service
 +
 +[Mount]
 +Options=rw,_netdev,auto,acl,exec,intr,bg,nfsvers=4,minorversion=2,x-systemd.device-timeout=60,x-systemd.mount-timeout=60
 +Type=nfs4
 +What=myhostserver.lan:/ssd-pool/mydatastore
 +Where=/home/mydata
 +# TimeoutSec=60
 +</code>
 +Wichtig ist hier der Part "After=wait-for-ping.service". Beim Nächste Start des Mount wird auf die Erreichbarkeit des Ziels gewartet.
 +
 ===== Debuging ===== ===== Debuging =====
 Um z.B. Zeiten beim Systemstart ansehen zu können gibt es zwei nette Befehle: Um z.B. Zeiten beim Systemstart ansehen zu können gibt es zwei nette Befehle:
Zeile 151: Zeile 287:
  
   *  [[https://www.freedesktop.org/software/systemd/man/systemd.service.html|Hersteller|Dokumentation Systemd]]   *  [[https://www.freedesktop.org/software/systemd/man/systemd.service.html|Hersteller|Dokumentation Systemd]]
 +  * [[https://www.freedesktop.org/software/systemd/man/systemd.mount.html|Hersteller|Dokumentation Systemd Mount Unit]]
   * https://wiki.ubuntuusers.de/systemd/systemctl/   * https://wiki.ubuntuusers.de/systemd/systemctl/
   * https://wiki.ubuntuusers.de/systemd/Mount_Units/   * https://wiki.ubuntuusers.de/systemd/Mount_Units/
server_und_serverdienste/systemd.1614868951.txt.gz · Zuletzt geändert: von lois