Unbekannter Dienst für vorhandenen, funktionierenden Dienst – Ubuntu 18.04

Unbekannter Dienst für vorhandenen, funktionierenden Dienst – Ubuntu 18.04

Ich versuche, beim Booten in Ubuntu Server 18.04 ein Skript zu laden. Mein .serviceSkript ist in installiert /etc/systemd/systemund ich kann Folgendes ausführen:

service my-service start

Und:

service my-service stop

Aber wenn ich versuche, es beim Booten auszuführen (was ich laut Internet tun sollte), mit:

 service my-service enable

Das System antwortet mit:

 my-service: unrecognised service

Eine Suche im Internet liefert mir nur Informationen dazu, wie es in älteren Ubuntu-Versionen funktioniert, die nicht auf 18.04 zutreffen, und ich bin nicht in der Lage, die richtige Terminologie zu ermitteln, um die Antwort zu finden.

Das Skript:

# filename: /etc/systemd/system/my-service.service
[Unit]
Description=My Service
After=network.target
After=mysqld.service

[Service]
User=the-user
WorkingDirectory=/home/the-user/path-to-script
ExecStart=/home/the-user/path-to-script/start.sh
SuccessExitStatus=0
TimeoutStopSec=10
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Meine Frage ist: Was mache ich falsch? Wie kann ich diesen Dienst beim Booten starten?

Antwort1

Verwenden Sie den tatsächlichen Befehl. Dieser systemdlautet:

sudo systemctl enable my-service

Zur Referenz: Sie müssen nicht das Hauptsystemverzeichnis für die Unit-Datei verwenden, wenn Sie möchten, dass sie für einen normalen Benutzer, z. B. Ihren eigenen, ausgeführt wird. Sie können sie in einem Verzeichnis wie diesem erstellen:

~/.config/systemd/user/

Dann können Sie Folgendes tun:

systemctl --user enable my-service

Dadurch entfällt die Notwendigkeitsudo

Wie Sie in Ihrem Kommentar angemerkt haben, sollten bei der Ausführung von benutzerspezifischen Instanzen systemdder Direktive keineUser

Antwort2

Notiz:
In anderen Fällen, in denen der gleiche Fehler auftritt:
Der serviceBefehl setzt dieObjektErste !

service foo start

DersystemctlDer Befehl bewirkt das Gegenteil:

systemctl start foo

Darüber hinaus können Sie im Dienst nicht „.service“ hinzufügen, während dies bei Verwendung von systemctl möglich ist.

verwandte Informationen