Autostart von rclone mittels Script

Hallo,
um die Anwendung rclone bei jedem Systemstart mitzustarten habe ich zuersdt hier (https://www.suse.com/support/kb/doc/?id=000016735) gelesen und mich für *Option 3 *entschieden - Da GNOME den beschriebenen Weg der ersten beiden Möglichkeiten nicht von Hause aus mitliefert, habe ich das folgende Script geschrieben

#!/bin/sh 
sh -c "rclone --vfs-cache-mode writes mount onedrive: ~/OneDrive"

Bei manuellem Start über das Terminal funktioniert es und Onedrive, das ich im Übergang von Windows zu openSuSE noch nutzen möchte, word gemountet. Das Script habe ich wie beschrieben in das Verzeichnis “~/.config/autostart”. gespeichert.
Woran kann es nun liegen, dass rclone offenbar nicht mitstartet? Was habe ich evtl. falsch gemacht?

Warum benutzt du nicht systemd, ist unabhängig vom Desktop.

systemd habe ich nicht so recht verstanden. Da war es mit dem Script einfacher. Zuerst habe ich es auch mit YaST-services-manager probiert, aber da ist rclone nicht aufgeführt.
Was muss ich machen, um den Autostart in systemd einzurichten?

Du musst nur einen systemd.service erstellen, darin dein gespeichertes Script aufrufen und dann den systemd.service enablen und starten.

Okay. Da lese ich mich jetzt mal rein. Mir stellt sich aber gerade die Frage, ob mein Script jetzt (und dann auch in systemd) zu früh ausgeführt wird. Der Rechner ist per Ethernet-Kabel verbunden und braucht immer ein paar Sekunden, bis er online ist. Solange kann das Script OneDrive natürlich auch nicht mounten. Brauche ich eine Zeitverzögerung?

Bei systemd kannst du das angeben…

Ansonsten versuch es doch mal mit sleep 30 für 30 Sekunden.
Ich würde auch immer komplette Pfade bei den Befehlen nehmen.

Wo muss die .service Datei denn liegen, damit systemctl sie ausführen kann?
/lib/systemd (wie beschrieben für das Anlegen von .service Dateien) gibt es bei mir nämlich nicht. Systemd ist aber installiert.

/lib/systemd

/usr/lib/systemd/

Wobei ich selbstgeschriebene nach

/etc/systemd

speichern würde

Beispiel.

In /etc/systemd/system legt man ein Datei an mit Name endend auf .service (/in /usr/lib usw. hast du nichts zu suchen).
Z.B. /etc/systemd/system/rclone.service


[Unit]
Description=Mach mal rclone
After=network.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c "/path/to/rclone --vfs-cache-mode writes mount onedrive: ~/OneDrive"

[Install]
WantedBy=multi-user.target

Achte auf /path/to/rclone. Das sollte das korrekte absolute Pfad sein.
(Ich weiß nichts von rclone, also es könnte Quatsch sein, aber das Princip giltet).

Um das zu starten (z.B. zum testen)


systemctl start rclone.service

Um das bei jeden Boot zu starten:


systemctl enable rclone.service

Status abfragen:


systemctl status rclone.service

Und das Alles natürlich als root (Andern haben schon erklärt das das Ganze nichts mit Desktop und sein Endbenutzer zi tun hat).

Okay. Unter /path/to/rclone sollte das Installationsverzeichniss von rclone aufgefufen werden oder ein Script, in dem der Code steht?
Was mich wundert: Ich kann im Terminal problemlos und ohne sudo

sh -c "rclone --vfs-cache-mode writes mount onedrive: ~/OneDrive"

ausführen. sobald ich es mit dem absoluten Pfad

/home/OneDrive

versuche, funktioniert es nicht.

  1. Das absolute Pfad nach rclone findest du mit
which rclonep
  1. When du ein normaler Benutzer bist ist ~/OneDrive eine kurze Andeutung deines Home-directory. Voll geschrieben ist das warscheinlich /home/<dein Benutzername>/OneDrive.

Übrigens, wenn ich da richtig verstehe das das um etwas innerhalb jeamds Homedirectry geht, sieht das nicht nach System handlung aus und sollte also nicht von root in systemd gemacht werden. Weil ich nichts von rclone weiß (wie schon gesagt), habe ich nur angenommen (laut andere Beitragen hier) das es um ein Systemhandlung geht. Und dasfür gezeigt wie man so was macht.

Also, um was geht es. Anscheinend bist du dich nicht genug bewust was ein Multi-Benutzer System wie Unix/Linux eigentlich beeinhaltet. Andern die wissen was rclone ist und ob das ein System oder Benutzer Program ist können dabei vielleicht helfen.

Danke. Tatsächlich war mir die Bedeutung des Mehrbenutzersystems für mein Problem nicht so bewusst. Daher hatte ich den absoluten Pfad auch immer falsch angegeben. Jetzt läuft alles bestens beim Start. Danke.

Bitte, bitte.

Bedenke immer im richtigen Moment das du nicht “du” nist auf ein Linux System. Es gibt root, es gibt mehrere, sogar viele Benutzer. Das deine Person zufällig hinter root und wenigstens einee Benutzer steckt ist reiner Zufall.

Also immer: ist das für nur ein Benutzer und verstehe ich das was ich da mache nicht für die andere Benutzer (z.B. Freundin, Ehefrau, Sohn) giltet (und das soll den auch ohne root Passwort auskommen), Oder ist das Systemweit und durch den Systemmanager zu organisieren (mit root Passwort).