App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Startreihenfolge von Diensten bei Systemd und klassischem Init
- Ersteller Dalai
- Erstellt am
Dalai
Grand Admiral Special
- Mitglied seit
- 14.06.2004
- Beiträge
- 7.420
- Renomée
- 262
- Standort
- Meiningen, Thüringen
- Mein Laptop
- Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
- Prozessor
- AMD Ryzen 5 2600 (Pinnacle Ridge)
- Mainboard
- ASUS Prime X370-A
- Kühlung
- Noctua NH-U12S mit 1x NF-F12
- Speicher
- Crucial Ballistix Sport LT weiß (BLS2K8G4D32AESCK): 2x 8 GiB DDR4-3200 (CL16) @ 1,25V
- Grafikprozessor
- Zotac GeForce GTX 1060 6GB AMP Edition
- Display
- Dell U2410, 24 Zoll, IPS, 16:10
- SSD
- Samsung 850 Evo 250 GB
- HDD
- WD40EZRZ (WD Blue) 4000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
- Optisches Laufwerk
- Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
- Soundkarte
- Creative SoundBlaster Audigy 2 ZS PCI
- Gehäuse
- Lian Li PC-8NB Midi-Tower
- Netzteil
- Enermax EMP400AGT MaxPro 400W
- Betriebssystem
- Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
- Webbrowser
- Mozilla Firefox mit diversen Erweiterungen
- Verschiedenes
- 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)
Hallo in die Runde, sowie ein gesundes und erfolgreiches neues Jahr an alle!
Aktuell bin ich dabei, privat einige Dienste auf Linux umzuziehen. Ich bin mit den derzeit relevanten Diensten im Prinzip schon durch, aber bei einer Sache weiß ich nicht so recht, wo und wie ich ansetzen muss. Konkret muss ich einen Dienst (Openfire), der nur ein klassisches Init-Skript mitbringt, von MySQL bzw. MariaDB abhängig machen. Es soll sichergestellt werden, dass Openfire beim Booten erst nach MySQL/MariaDB startet, und beim Herunterfahren/Neustart die ganze Geschichte natürlich umgekehrt, also erst Openfire beenden bevor MySQL gestoppt wird.
Das Ganze findet auf einem Debian 10.x (Buster) statt. Was mich wundert, ist die Tatsache, dass MariaDB sowohl eine Systemd-Unit als auch ein klassisches Init-Skript mitbringt, das auch in /etc/rc?.d verlinkt wird.
Kann mir jemand sagen, wo ich ansetzen muss, oder die richtigen Suchbegriffe nennen, mit denen ich weiterkomme? Das wäre klasse.
Grüße
Dalai
Aktuell bin ich dabei, privat einige Dienste auf Linux umzuziehen. Ich bin mit den derzeit relevanten Diensten im Prinzip schon durch, aber bei einer Sache weiß ich nicht so recht, wo und wie ich ansetzen muss. Konkret muss ich einen Dienst (Openfire), der nur ein klassisches Init-Skript mitbringt, von MySQL bzw. MariaDB abhängig machen. Es soll sichergestellt werden, dass Openfire beim Booten erst nach MySQL/MariaDB startet, und beim Herunterfahren/Neustart die ganze Geschichte natürlich umgekehrt, also erst Openfire beenden bevor MySQL gestoppt wird.
Das Ganze findet auf einem Debian 10.x (Buster) statt. Was mich wundert, ist die Tatsache, dass MariaDB sowohl eine Systemd-Unit als auch ein klassisches Init-Skript mitbringt, das auch in /etc/rc?.d verlinkt wird.
Kann mir jemand sagen, wo ich ansetzen muss, oder die richtigen Suchbegriffe nennen, mit denen ich weiterkomme? Das wäre klasse.
Grüße
Dalai
Dalai
Grand Admiral Special
- Mitglied seit
- 14.06.2004
- Beiträge
- 7.420
- Renomée
- 262
- Standort
- Meiningen, Thüringen
- Mein Laptop
- Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
- Prozessor
- AMD Ryzen 5 2600 (Pinnacle Ridge)
- Mainboard
- ASUS Prime X370-A
- Kühlung
- Noctua NH-U12S mit 1x NF-F12
- Speicher
- Crucial Ballistix Sport LT weiß (BLS2K8G4D32AESCK): 2x 8 GiB DDR4-3200 (CL16) @ 1,25V
- Grafikprozessor
- Zotac GeForce GTX 1060 6GB AMP Edition
- Display
- Dell U2410, 24 Zoll, IPS, 16:10
- SSD
- Samsung 850 Evo 250 GB
- HDD
- WD40EZRZ (WD Blue) 4000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
- Optisches Laufwerk
- Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
- Soundkarte
- Creative SoundBlaster Audigy 2 ZS PCI
- Gehäuse
- Lian Li PC-8NB Midi-Tower
- Netzteil
- Enermax EMP400AGT MaxPro 400W
- Betriebssystem
- Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
- Webbrowser
- Mozilla Firefox mit diversen Erweiterungen
- Verschiedenes
- 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)
Inzwischen hab ich einen gangbaren Weg gefunden. Offenbar ist es so, dass Systemd die klassischen Init-Skripte jedes Mal beim Booten analysiert und daraus eine Unit in /run/systemd/generator.late generiert. Es gibt also sozusagen für alle Dienste eine Systemd-Unit, auch für solche, die eigentlich keine mitbringen.
Aus der generierten Unit hab ich die für mich relevanten Angaben rausgeholt, Dopplungen entfernt, und die Abhängigkeit zu MySQL ergänzt. Das Ergebnis hab ich in eine separate Datei /etc/systemd/system/openfire.service.d/dependency.conf gepackt:
Der Dateiname der .conf ist letztlich egal (der Pfad aber nicht).
Bisher hat sich der Openfire nicht mehr beschwert, dass er einige Sekunden keinen Zugriff auf den DB-Server hat. Und beim Herunterfahren scheint er auch vor dem MySQL angehalten zu werden. Schick, aber dennoch werd ich nicht warm mit Systemd.
Grüße
Dalai
Aus der generierten Unit hab ich die für mich relevanten Angaben rausgeholt, Dopplungen entfernt, und die Abhängigkeit zu MySQL ergänzt. Das Ergebnis hab ich in eine separate Datei /etc/systemd/system/openfire.service.d/dependency.conf gepackt:
Code:
[Unit]
Before=
Before=multi-user.target
After=
After=local-fs.target remote-fs.target network-online.target syslog.service mysql.service
Wants=network-online.target
[Service]
TimeoutSec=2min
Bisher hat sich der Openfire nicht mehr beschwert, dass er einige Sekunden keinen Zugriff auf den DB-Server hat. Und beim Herunterfahren scheint er auch vor dem MySQL angehalten zu werden. Schick, aber dennoch werd ich nicht warm mit Systemd.
Grüße
Dalai
Berniyh
Grand Admiral Special
- Mitglied seit
- 29.11.2005
- Beiträge
- 5.203
- Renomée
- 217
Es gibt schon Möglichkeiten harte Abhängigkeiten in systemd Units zu packen, aber generell wird davon ausgegangen, dass das nicht notwendig ist.
In deinem Fall scheint der Dienst ja auch zu funktionieren, hat nur einige Sekunden lange keinen Zugriff (was ja nicht prinzipiell schlimm ist, oder?).
Letztendlich sollte es aber schon funktionieren, wenn du das bei Before=/After= in der einen oder der anderen Unit rein packst.
Ich würde dir in dem Fall aber einfach empfehlen für Openfire eine systemd Unit zu erstellen und die statt des Shell Skripts zu nutzen. Ist zum Einen übersichtlicher und zum anderen umgehst du damit dann einen Teil deines Problems.
Irgendwo ist mir auch unklar, warum die überhaupt noch ein Shell Skript mitliefern.
In deinem Fall scheint der Dienst ja auch zu funktionieren, hat nur einige Sekunden lange keinen Zugriff (was ja nicht prinzipiell schlimm ist, oder?).
Letztendlich sollte es aber schon funktionieren, wenn du das bei Before=/After= in der einen oder der anderen Unit rein packst.
Ich würde dir in dem Fall aber einfach empfehlen für Openfire eine systemd Unit zu erstellen und die statt des Shell Skripts zu nutzen. Ist zum Einen übersichtlicher und zum anderen umgehst du damit dann einen Teil deines Problems.
Irgendwo ist mir auch unklar, warum die überhaupt noch ein Shell Skript mitliefern.
Dalai
Grand Admiral Special
- Mitglied seit
- 14.06.2004
- Beiträge
- 7.420
- Renomée
- 262
- Standort
- Meiningen, Thüringen
- Mein Laptop
- Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
- Prozessor
- AMD Ryzen 5 2600 (Pinnacle Ridge)
- Mainboard
- ASUS Prime X370-A
- Kühlung
- Noctua NH-U12S mit 1x NF-F12
- Speicher
- Crucial Ballistix Sport LT weiß (BLS2K8G4D32AESCK): 2x 8 GiB DDR4-3200 (CL16) @ 1,25V
- Grafikprozessor
- Zotac GeForce GTX 1060 6GB AMP Edition
- Display
- Dell U2410, 24 Zoll, IPS, 16:10
- SSD
- Samsung 850 Evo 250 GB
- HDD
- WD40EZRZ (WD Blue) 4000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
- Optisches Laufwerk
- Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
- Soundkarte
- Creative SoundBlaster Audigy 2 ZS PCI
- Gehäuse
- Lian Li PC-8NB Midi-Tower
- Netzteil
- Enermax EMP400AGT MaxPro 400W
- Betriebssystem
- Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
- Webbrowser
- Mozilla Firefox mit diversen Erweiterungen
- Verschiedenes
- 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)
Der Dienst versucht mehrere Sekunden lang, den MySQL-Server zu erreichen. Solange er das nicht kann, meckert er das im Log mit entsprechenden Meldungen (Java-Exceptions?) an. Wenn alles sauber funktioniert, will ich keine Fehlermeldungen in Logs haben, denn sowas irritiert nur, insbesondere beim Auftreten von echten Problemen.In deinem Fall scheint der Dienst ja auch zu funktionieren, hat nur einige Sekunden lange keinen Zugriff (was ja nicht prinzipiell schlimm ist, oder?).
Naja, das hab ich jetzt ja, indem ich einige Angaben aus der generierten Unit mit den oben geposteten .conf überschrieben/überstimmt habe.Letztendlich sollte es aber schon funktionieren, wenn du das bei Before=/After= in der einen oder der anderen Unit rein packst.
Kann man machen, aber das ist mir zuviel Aufwand.Ich würde dir in dem Fall aber einfach empfehlen für Openfire eine systemd Unit zu erstellen und die statt des Shell Skripts zu nutzen.
Vielleicht aus Kompatibilitätsgründen. Klassische Init-Skripte gehen eben überall.Irgendwo ist mir auch unklar, warum die überhaupt noch ein Shell Skript mitliefern.
Grüße
Dalai
Berniyh
Grand Admiral Special
- Mitglied seit
- 29.11.2005
- Beiträge
- 5.203
- Renomée
- 217
Ist nicht sonderlich viel Aufwand.Kann man machen, aber das ist mir zuviel Aufwand.
Zudem kann man sich ja auch bei anderen Distributionen bedienen und das für seine eigenen Zwecke anpassen. z.B.:
svntogit-community/trunk/openfire.service at packages/openfire · archlinux/svntogit-community
Automatic import of svn 'community' repo (read-only mirror) - archlinux/svntogit-community
github.com
Ich persönlich bin ein großer Fan von den unit Dateien. Sind wesentlich übersichtlicher und nachvollziehbarer als die shell Skripte. Die gingen mir schon zu SysV init / OpenRC Zeiten auf den Zeiger, da es immer wieder mal zu Problemen kam und man dann Stunden damit verbracht hat herauszufinden an welcher Stelle im Skript nun das ganze Amok läuft (in einem Fall ist es mir sogar nie gelungen).
Leider ist bei systemd auch nicht alles golden was glänzt, aber zumindest den einen Schritt fand ich super.
rhHeini
Vice Admiral Special
Du kannst das ja auch mal mit Devuan Beowulf = Debian Buster - systemd probieren. Da gehen normale Init-Skripte.
Rolf
Rolf
Dalai
Grand Admiral Special
- Mitglied seit
- 14.06.2004
- Beiträge
- 7.420
- Renomée
- 262
- Standort
- Meiningen, Thüringen
- Mein Laptop
- Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
- Prozessor
- AMD Ryzen 5 2600 (Pinnacle Ridge)
- Mainboard
- ASUS Prime X370-A
- Kühlung
- Noctua NH-U12S mit 1x NF-F12
- Speicher
- Crucial Ballistix Sport LT weiß (BLS2K8G4D32AESCK): 2x 8 GiB DDR4-3200 (CL16) @ 1,25V
- Grafikprozessor
- Zotac GeForce GTX 1060 6GB AMP Edition
- Display
- Dell U2410, 24 Zoll, IPS, 16:10
- SSD
- Samsung 850 Evo 250 GB
- HDD
- WD40EZRZ (WD Blue) 4000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
- Optisches Laufwerk
- Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
- Soundkarte
- Creative SoundBlaster Audigy 2 ZS PCI
- Gehäuse
- Lian Li PC-8NB Midi-Tower
- Netzteil
- Enermax EMP400AGT MaxPro 400W
- Betriebssystem
- Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
- Webbrowser
- Mozilla Firefox mit diversen Erweiterungen
- Verschiedenes
- 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)
Doch, ist es, vor allem für jemanden, der gerade erst anfängt, sich mit Systemd zu beschäftigen. Es geht ja schon damit los, dass das Init-Skript eine Suche nach einem ("dem besten") Java macht, bevor es den Dienst startet, alternativ aber auch ein Java an nutzerdefinierter Stelle nutzen kann. Ich werde das jetzt erstmal so lassen, bis es einen Grund gibt, es zu ändern. Ob es stabil funktioniert, wird sich in den kommenden Tagen zeigen, wenn ich das Openfire auf meinem neuen Raspi installiere - ich gehe aber davon aus.Ist nicht sonderlich viel Aufwand.
Ich hatte darüber nachgedacht, eine Distri ohne Systemd zu nutzen, aber da in der Firma ein Ubuntu läuft, muss ich mich sowieso mit Systemd auseinandersetzen. Allerdings versuche ich, das auf das Allernötigste zu reduzieren, denn mich nervt der Wechsel des Init-Systems alle drei bis vier Jahre: im Ubuntu 8 nur SysV, dann im Ubuntu 12 Upstart und ab Ubuntu 16 ist es Systemd. Was kommt dann 2022?Du kannst das ja auch mal mit Devuan Beowulf = Debian Buster - systemd probieren. Da gehen normale Init-Skripte.
Da mein Ziel ist, das Openfire auf einem Raspi laufen zu lassen, hab ich da eh keine so freie Wahl der Distribution wie auf einem PC. Das konntest du natürlich nicht wissen, denn bisher hab ich das hier nicht erwähnt, weil die Idee mit dem Raspi einerseits erst vor wenigen Wochen kam und andererseits dieses Detail von untergeordneter Bedeutung ist.
Grüße
Dalai
Berniyh
Grand Admiral Special
- Mitglied seit
- 29.11.2005
- Beiträge
- 5.203
- Renomée
- 217
Das hat da aber auch eigentlich überhaupt nichts verloren und erhöht nur völlig unnötigerweise die Komplexität.Doch, ist es, vor allem für jemanden, der gerade erst anfängt, sich mit Systemd zu beschäftigen. Es geht ja schon damit los, dass das Init-Skript eine Suche nach einem ("dem besten") Java macht, bevor es den Dienst startet, alternativ aber auch ein Java an nutzerdefinierter Stelle nutzen kann.Ist nicht sonderlich viel Aufwand.
Wie man hier bei systemd vorgehen würde? Nun, die Distribution sollte eine unit mitbringen, welche für die typische Standardkonfiguration der Distribution funktioniert.
Du willst einen benutzerdefinierten Pfad zu deinem Programm oder einem anderen was das nutzt?
Dann kopiert man einfach die Standrad Unit von /usr/lib/systemd/system nach /etc/systemd/system und passt sie so an, dass sie den eigenen Bedürfnissen genügt.
Da die Units sehr übersichtlich und einfach gehalten sind ist das normalerweise auch kein Problem und schnell erledigt.
Hat zudem den Vorteil, dass man auch selbst nachvollziehen kann was die Unit macht. Wenn die Unit dann mit gleichem Dateinamen in /etc liegt, dann hat die auch Priorität und wird genutzt.
So maskiert man übrigens auch Units um sicherzustellen, dass systemd sie niemals startet, indem man einen Link mit gleichem Namen auf /dev/null ablegt, z.B.:
Code:
ll /etc/systemd/system/systemd-coredump@.service
lrwxrwxrwx 1 root root 9 May 3 2018 /etc/systemd/system/systemd-coredump@.service -> /dev/null
Tatsächlich ist es vermutlich so, dass gerade die Komplexität der Shell Skripte dazu geführt hat, dass das solche Blüten trägt wie das was du da erwähnt hast, da man es nicht mehr verantworten konnte dem Admin die Modifikation der Skripte zu überlassen, zu groß war das Risiko, dass dabei Bugs eingeführt werden.
Ich kann aber natürlich auch verstehen, dass neue Konzepte erst mal überfordern, insofern kann ich dein Vorgehen nachvollziehen.
Genau daher hatte ich dich aber auch auf entsprechende Unit Dateien aus anderen Distributionen hingewiesen.
Genau das ist nämlich auch ein extrem großer Vorteil von systemd, dass es die Eingangsdateien des Init Systems deutlich vereinheitlicht hat.
Sys V Init zwischen Distributionen auszutauschen war im Grunde undenkbar, bei systemd Units geht das in vielen Fällen problemlos, hier und da muss man evtl. noch Pfade anpassen, aber das ist im Normalfall kein Problem, man kann ja nach den entsprechenden Dateien suchen (bzw. sich die Dateiliste der entsprechenden Pakete ausgeben lassen).
Man muss für solche Units also so gut wie nie bei Null anfangen, hab ich selbst glaube ich auch nur 2-3 mal gemacht.
Da hätte ich wenig Bedenken. Das Thema ist durch. systemd ist der neue Standard und wird es auf absehbare Zeit auch bleiben.Allerdings versuche ich, das auf das Allernötigste zu reduzieren, denn mich nervt der Wechsel des Init-Systems alle drei bis vier Jahre: im Ubuntu 8 nur SysV, dann im Ubuntu 12 Upstart und ab Ubuntu 16 ist es Systemd. Was kommt dann 2022?
Es ist sicher nicht perfekt und sorgt (manchmal auch wirklich zurecht) hier und da für Kritik, aber im Grunde sind die meisten wohl auch einfach froh die Sys V Init Zeit hinter sich zu haben.
Ich persönlich bin auch nicht mit allem zufrieden. z.B. wie mounts gehandhabt werden ist auf meinem System immer wieder mal sehr nervig.
z.B. ist es zumindest früher (?) passiert, dass systemd ein mount das man gerade als root eingehängt hatte (ne Backup Platte o.ä.) direkt wieder ausgehängt wurde, weil es nicht in fstab eingetragen war. So komisches Zeug halt …
Mittlerweile funktioniert es aber eigentlich ziemlich gut und manche der Änderungen die systemd über die Zeit mitgebracht hat empfinde ich inzwischen als deutliche Verbesserung. Vor allem das journal (da gab es ja auch sehr viel Kritik), da die Abfrage der Logs über journalctl einfach so viel besser und angenehmer ist als alles was man vorher hatte. So muss ich, wenn ich z.B. wissen wollte welche btrfs Meldungen es seit dem letzten Bootvorgang gab nur aufrufen:
Code:
journalctl -b 0 -g btrfs
Code:
journalctl --boot=0 --grep=btrfs
Und wenn ich dann nur Fehler haben wollte:
Code:
journalctl --boot=0 --grep=btrfs --priority=err
Im syslog nach btrfs zu greppen wäre natürlich auch gegangen, aber bei den anderen beiden Dingen wird es schon deutlich schwerer. Ok, nach "error" greppen geht sicher auch noch, aber es ist hier halt schon sehr hilfreich, dass journalctl nicht nur auf den eingetragenen Text Zugriff hat, sondern auch noch zusätzliche Tags, Statuseinträge etc.
Auch die integrierten resolved, networkd und timesyncd ziehe ich inzwischen den Alternativen vor, aber das ist sicher auch Geschmackssache, aber man kann da ja wählen was man nutzen will.
Ähnliche Themen
- Antworten
- 0
- Aufrufe
- 51K