
Ich habe zwei Programme im Ubuntu-Server 20.04, die sich hier befinden:
/home/kiko/go-btfs/cmd/btfs
/home/kiko/node5007/cmd/btfs
Sie werden beide mit dem Befehl ausgeführt: ./btfs daemon
Wie kann dieser Befehl für beide Verzeichnisse so eingerichtet werden, dass sie vor der Anmeldung beim Server automatisch gestartet werden? Ich habe versucht, einen Autostart-Dienst mit zu erstellen sudo nano /etc/systemd/system/btfs_main.service
und dann die folgenden Einstellungen in die Einheit einzugeben btfs_main.service
:
[Unit]
Description=Starting_btfs_daemon
Wants=network.target
After=syslog.target network-online.target
[Service]
Type=simple
ExecStart=/home/kiko/go-btfs/cmd/btfs/./btfs daemon
ExecStart=/home/kiko/node5007/cmd/btfs/./btfs daemon
Restart=on-failure
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target
und dann: sudo systemctl daemon-reload
, sudo systemctl enable btfs_main.service
, sudo systemctl start btfs_main.service
, systemctl status btfs_main.service
. Beim letzten Befehl tritt ein Fehler auf: Unit btfs_main.service has a bad unit file setting
. Wie konfiguriere ich die Einheiteneinstellungen, damit beide Befehle automatisch ausgeführt werden?
Antwort1
Sie können die Datei /etc/rc.local verwenden, um Ihr Skript nach dem Neustart des Servers zu starten.
Sie müssen die folgenden Schritte ausführen:
- Erstellen Sie zunächst
/etc/rc.local
die Datei und machen Sie sie ausführbar. Dies kann per Befehl erfolgenchmod a+x /etc/rc.local
. - Erstellen Sie nun
/etc/systemd/system/rc-local.service
die Datei. Fügen Sie nach dem Erstellen der Systemd-Dienstdatei den folgenden Inhalt hinzu.
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
- Aktivieren Sie anschließend den Dienst beim Systemstart:
systemctl aktivieren rc-local
- Starten Sie nun den Dienst und überprüfen Sie seinen Status:
systemctl start rc-local.service
systemctl status rc-local.service
Sie sollten eine Ausgabe wie im folgenden Bild erhalten.
- Fügen Sie nun Ihre Skripte in die
/etc/rc.local
Datei ein und machen Sie sie ausführbar. - Starten Sie den Server neu und überprüfen Sie die Ergebnisse.