Das Skript nimmt keine Systemctl-Befehle entgegen

Das Skript nimmt keine Systemctl-Befehle entgegen

Ich habe einen benutzerdefinierten Dienst {start|stop|restart|reload|force-reload|status}für StoneDb erstellt (eine modifizierte MySQL-Version), aber beim Überprüfen des Status erhalte ich diesen Fehler: Bildbeschreibung hier eingeben

Das bedeutet eindeutig, dass der Befehl nicht von StoneDb übernommen wird, auch wenn ich dasselbe Skript verwende, um den Dienst manuell zu verwalten.

[Unit]
Description=StoneDB database server
After=network.target
#StartLimitIntervalSec=90

[Service]
Type=forking
ExecStart=/opt/stonedb57/install/mysql_server
TimeoutSec=300

[Install]
WantedBy=multi-user.target

Was fehlt mir hier?

Antwort1

DersystemctlBefehle zum Starten und Stoppen einesServiceeinheitÜbergeben Sie Ihre (systemctl) Befehlszeilenargumente nicht, der ExecStart= Befehl zum Starten des Dienstes wird wortwörtlich wie in der Diensteinheit definiert ausgeführt.

Wenn dieses Skript ein Argument erwartet, also eine Option wie stopoder start, wie Ihre Fehlermeldung nahelegt, muss dieses Argument in der ExecStart=script some-argumentDefinition enthalten sein.

Wie bereits kommentiert:

[Service]
Type=forking
ExecStart=/opt/stonedb57/install/mysql_server start
ExecStop=/opt/stonedb57/install/mysql_server stop
ExecReload=/opt/stonedb57/install/mysql_server reload
TimeoutSec=300

...

Anstatt jedoch das mysql_serverHilfs-/Wrapper-Skript aufzurufen, könnten Sie die nativere systemd-Service-Unit verwenden, die von MySQL und StoneDB als Service-Unit-Vorlage bereitgestellt wird:

https://github.com/stoneatom/stonedb/tree/stonedb-5.7-dev/scripts/systemd

verwandte Informationen