C
CrimsonKing
Guest
Tastaturen sind auch nicht mehr zeitgemäß. Und - benutzst du nur noch Touchscreens?
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Und Gründe warum irgend ein Dienst wegsterben kann sind halt so vielfältig, da ist es einfach billiger und einfacher das System redundant und selbstheilend aufzubauen.
Das hilft Dir alles nichts, wenn Du für SAP, Hybris, Oracle und was es sonst da noch alles gibt Support benötigts und halt nur ein zertifizierter Stand unterstützt wird. Da kannste Du wie das Rumpelstielzchen umherhüpfen, die werden Dir was husten :-)
Entweder läuft dein System relativ still, rebootet aber oft neu(man kann ihm aber uU. nicht 100% vertrauen) oder man nimmt Auszeiten in Kauf dafür hat man stets definiertes Verhalten und dann aussteigert wenn assert = false ist.
Ich möchte der Software vertrauen, das sie ihren Job tut.
Ja, ich weiß, jeder Vergleich hinkt irgendwo. Mir ging's nur darum, dass "zeitgemäß" ein äußerst subjektiver und nicht sehr aussagekräftiger Begriff ist. Bzw. einfach, das man das am Besten präzisieren sollt
Schau und ich habe den Frust mit systemd. Da will ich sowas simples machen wir für mein dnscrypt-proxy meinen Port ändern. Unter RC habe für solche und ähnliche Dinge simple Variablen und wenn ich was komplexeres machen will ein schönes Shelll-Skript. Alles was ich brauche landet in rc.conf.ich hab einfach keine Lust mich in diesen großen Haufen SH-Magie einzuarbeiten wo Variablen über 20 Dateien verteilt sind, damit die Skripte nicht noch länger werden.
[Unit]
Description=he.net IPv6 tunnel
After=network.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/ip tunnel add he-ipv6 mode sit remote Server_IPv4_Address local Client_IPv4_Address ttl 255
ExecStart=/usr/bin/ip link set he-ipv6 up mtu 1480
ExecStart=/usr/bin/ip addr add Client_IPv6_Address dev he-ipv6
ExecStart=/usr/bin/ip -6 route add ::/0 dev he-ipv6
ExecStop=/usr/bin/ip -6 route del ::/0 dev he-ipv6
ExecStop=/usr/bin/ip link set he-ipv6 down
ExecStop=/usr/bin/ip tunnel del he-ipv6
[Install]
WantedBy=multi-user.target
Sorry, ja. Ich wollte da keine große Diskussion zu Begrifflichkeiten machen. Nur sehe ich das Argument "das ist besser, weil es neuer ist" viel zu oft. Und dann hat man irgendwelche Designfehler aus deren Einsichten der vermeintlich überholte Vorgänger entstanden ist.
Wenn man systemctl daemon-reload braucht, sagt einem systemctl das auch. Das Hauptproblem bei dir dürfte jetzt eher sein, dass du die Datei genau gleich benannt hast, statt ihm einfach einem anderen Namen zu geben. FreeBSD steigt dir da auch aus, wenn du gleichnamige Init-Skripte in unterschiedlichen Ordnern hast. Darum heißt der Base SSHD auch sshd und der aus den Ports opensshd. Und das es .socket Dateien gibt als Kritikpunkt zu sehen... wie gesagt. Es ist ein Feature von systemd und kein Muss. Dein Problem war vermutlich einfach der Name.Unter systemd:
- Ich schaue zunächst in /usr/lib/systemd/system/dnscrypt-proxy.service (persönlich ein Graus mit /usr/lib)
Dann will ich den Port dadrin ändern indem ich ein Flag ändere. In den meisten Guides steht dann "editiere die Datei". Da ich mittlerweile ein wenig Erfahrung habe weiß ich, dass es besser ist die Datei nach /etc/systemd/system/dnscrypt-proxy.service kopiere, damit der Package Manager nicht reinfunkt (ist ein bisschen wie /etc/default unter FreeBSD.- Dann ändere ich das Port. Ich skripte also quasi.
- Dann mache ich ein systemctl daemon-reload (nichts schlimmes, aber man ärgert sich, wenn man drauf vergisst und sich wunder warum's nicht funktionier)
- Dann funktioniert das ganze nicht. Warum nicht? Weil es ja noch eine andere Datei gibt, dnscrypt-proxy.socket. Das kann ja keinesfalls Teil des Unit-Files sein. Das ist eindeutig nicht zentral.
- Das kopiere ich auch, nach etc und dann geht's hoffentlich.
- Womöglich brauche ich noch Anpassungen unter unbound, die ähnlich sind und natürlich mit socket files
Während dem Debuggen spiele ich mich mit journalctl rum und nein, das ist nicht einfacher als mit Datein zu arbeiten. Solange es Dateien gibt unter Unix werde ich mir einfacher tun mit Files zu arbeiten und kann mir da auch was zusammenstöpseln als Sysadmin. Das ist ja eine große Stärke von Unix. In journalctl sind alle tools nochmal neu mit leichten Unterschieden und teilweise mit Bugs (-n1, -n0 hatten Bugs unter manchen Systemen, aber gut, ist gefixed).
Wenn ich schon bei sowas quasi an Systemd anstehe dann ist das bei komplexeren Dingen noch schlimmer. Und in der tat sehe ich immer häufiger Dinge, wie die hier:
Code:[Unit] Description=he.net IPv6 tunnel After=network.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/ip tunnel add he-ipv6 mode sit remote Server_IPv4_Address local Client_IPv4_Address ttl 255 ExecStart=/usr/bin/ip link set he-ipv6 up mtu 1480 ExecStart=/usr/bin/ip addr add Client_IPv6_Address dev he-ipv6 ExecStart=/usr/bin/ip -6 route add ::/0 dev he-ipv6 ExecStop=/usr/bin/ip -6 route del ::/0 dev he-ipv6 ExecStop=/usr/bin/ip link set he-ipv6 down ExecStop=/usr/bin/ip tunnel del he-ipv6 [Install] WantedBy=multi-user.target
Ein Shell-Skript eingebettet in einem Config-File. Sowas wäre mit einem simplen, leicht lesbaren RC-Script schnell erledigt und hätte ein sauberers und wahrscheinlich flexibleren Interface (ein paar Config-Variablen für rc.conf), als ein paar Dinge in einem Unit-File zu ändern. Ist wieder Frickelei und ein schöner Platz für Fehler.
for ifn in $_cooked_list; do
case ${ifn#epair} in
[0-9]*[ab]) ;; # Skip epair[0-9]*[ab].
[0-9]*)
for _str in $_cooked_list; do
case $_str in
$ifn) _tmp_list="$_tmp_list ${ifn}a ${ifn}b" ;;
*) _tmp_list="$_tmp_list ${ifn}" ;;
esac
done
_cooked_list=${_tmp_list# }
;;
esac
done
Der Kritikpunkt hier ist einfach ein wenig die Praxisferne. Ja, ein simples Format ist eine gute Idee, aber wenn das dann Leute zu Hacks bewegt, dann hat man was falsch gemacht. Und einfache, brave, schöne Daemons die mit Systemd-Unit schön und einfach zu lösen sind sind auch schöne und simple RC-Skripte. Du wirst in beiden Systemen unschöne Sachen sehen. Ich halte den SystemD-Ansatz da ein wenig für unerfahren, weil er zu sehr von Idealzuständen ausgeht, was in der IT meist kein sehr guter Ratgeber ist. Vielleicht übersehe ich nur etwas ganz grobes und verstehe mich nicht falsch. Ich meine nicht, dass die Leute generell Unerfahren sind, was C-Code oder so betrifft, sondern dass manche Annahmen ziemlich naiv sind und nur auf einen relativen schmalen Grad und Nutzung ausgelegt ist. Ja, das Ganze ist flexibel genug um mit Hacks alles mögliche zu erreichen, aber dann fehlt ziemlich schnell der Mehrwert.
Achja, hat du ein konkretes Beispiel, warum du durch vier Files schauen musstest und wie du das unter SystemD gelöst hast? Wäre echt neugierig.
# PROVIDE: mdnsd
# REQUIRE: DAEMON
# KEYWORD: shutdown
. /etc/rc.subr
name=mdnsd
rcvar=mdnsd_enable
load_rc_config $name
: ${mdnsd_enable="NO"}
: ${mdnsd_pidfile="/var/run/${name}.pid"}
command="/usr/local/sbin/${name}"
pidfile="${mdnsd_pidfile}"
run_rc_command $*
- Doppelpunkt, leerzeichen Dollar?
- run_rc_command Dollar Sternchen? Huh?
Also wenigstens Shell sollte man schon draufhaben, sonst hat man eigtl. überhaupt nichts bei UNIX verloren.
Wenn du Shell nicht kannst, solltest du keinen Server betreiben dürfen. Das ist eine Gefahr für dich und alle Besucher.
Sorry, aber jemandem wegen einer kleineren Sache mal eben pauschal sämtliche Leistungen abzuerkennen ist armselig.
Nicht nur, dass du nicht weißt, was diese Konstrukte in Shell machen, du bist auch anscheinend nicht in der Lage, dir das anzueignen. Darum geht's. Ich stimme zu, dass gerade FreeBSD es massiv übertreibt mit der Komplexität in seinen rc-Skripten, aber mit diesen zwei kleinen Details entlarvst du dich selbst und nicht FreeBSD.
Ich hab schon vorher gesagt, dass ich mir den Kram nicht aneignen _will_.
Dann schreibste halt keine Initscripts. Und?
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen