Skript wird nicht gestartet

Hallo!
Ich habe ein Skript welches, nach dem einloggen, abgearbeitet werden soll.
Leider wird es nicht gestartet, obwohl es als ausführbar gekennzeichnet ist.
Wenn ich die Befehlszeilen einzeln in einen Terminal kopiere funktioniert es einwandfrei.

Der Name ist 0000_Bluray_UHD_Datenbank_aktualisieren.sh
der Inhalt :

cd ~/.config/aacs/ && wget -N --no-check-certificate http://fvonline-db.bplaced.net/export/keydb_deu.zip
unzip -o  keydb_deu.zip
cp keydb.cfg KEYDB.cfg

Ich gebe im Startmenü Autostart ein und nutze die GUI um z. die Zugangsberechtigungen zu setzen.
Hier :
Eigentümer : Anzeige & Änderung möglich
Gruppe : Kein Zugriff
Sonstige : Kein Zugriff

und Haken bei “Ausführung als Programm erlauben” gesetzt.
Der Eigentümer bin ich und es ist in meiner Gruppe.

Erweiterte Berechtigungen sind keine gesetzt.

Öffnen mit : Konsole

Der Programmpfad ist : /home/USER/.config/autostart/0000_Bluray_UHD_Datenbank_aktualisieren.sh

Woran kann es liegen das dieses Skript nicht gestartet wird?

Vielen Dank im voraus.

MfG R..Lehmeier

Nachtrag:

Wenn ich auf der Konsole in das Verzeichnis autostart gehe und versuche das Skript direkt zu starten bekomme ich :

autostart]$ 0000_Bluray_UHD_Datenbank_aktualisieren.sh
bash: 0000_Bluray_UHD_Datenbank_aktualisieren.sh: Kommando nicht gefunden.

Wenn Du in der Konsole ein Skript starten möchtest, muss das Skript im Pfad (Variable $PATH) gefunden werden können. Ansonsten musst Du den Pfad zum Skript mit angeben.
Im gleichen Verzeichnis musst Du ./0000_Bluray_UHD_Datenbank_aktualisieren.sh verwenden.

1 Like

Es ist mir ja egal wo es ausgeführt wird, solange es gestartet wird.

Ich habe doch /home/USER/.config/autostart/0000_Bluray_UHD_Datenbank_aktualisieren.sh als Programmpfad angegeben. Reicht das nicht aus?

Wenn du Konsole öffnest und dann /home/$USER/.config/autostart/0000_Bluray_UHD_Datenbank_aktualisieren.sh ausführst, läuft dann das Skript?

Der /home/$USER/.config/autostart Ordner ist außerdem für *.desktop Dateien vorgesehen. Ich würde instinktiv davon abraten, das Skript da zu platzieren. Das sollte eher in ~/.local/bin liegen.

1 Like

Wollte gerade sagen, fehlt da nicht das $ vor USER?

Ja, es funktioniert.

Der /home/$USER/.config/autostart Ordner ist außerdem für *.desktop Dateien vorgesehen. Ich würde instinktiv davon abraten, das Skript da zu platzieren. Das sollte eher in ~/.local/bin liegen.

Ich habe es in den Ordner /home/$USER/autostart-scripts/ verschoben.

Allerdings startet es immer noch nicht.

versuch mal chmod 644 <skript> Hier müsste chmod 755 <skript> stehen!.

Ich bin mir nicht sicher, ob diese Skripte unter dem User oder einer anderen ID ausgeführt werden.

Ich habe nun alle mir bekannten Varianten ausprobiert und habe nun den Verdacht das die Autostartfunktion nicht gestartet wird.
Kann es sein das sie irgendwie abgeschaltet ist und deshalb Änderungen unter “Schnelleinstellungen => Autostart” nicht gestartet werden?

Hast du mal probiert einen Starter für dein Skript zu erstellen? Dann im Autostart auf den Starter verweisen.
Wenn ich ein Skript direkt im Autostart Menü ausführe, hatte ich auch schon solche Probleme.
Doppelklick auf das Skript funktioniert, im Terminal eingegeben auch, aber nicht als Autostart.
Probier das mal mit dem Starter.

Manchmal ist bei Autostart-Skripten auch einfach das Netzwerk “noch nicht oben”. Du kannst ja mal zur Diagnose die Ausgave von curl loggen, oder eine Startverzögerung einstellen.

Nach dem ich chmod 644 0000_Bluray_UHD_Datenbank_aktualisieren.sh ausgeführt hatte bekam ich die Meldung : chmod 644 0000_Bluray_UHD_Datenbank_aktualisieren.sh.

Hast du mal probiert einen Starter für dein Skript zu erstellen?

Es liegt ein Strterskript in ./config/autostart.

Mit dem Inhalt :

[Desktop Entry]
Comment[de_DE]=
Comment=
Exec=/home/ralf/autostart-scripts/0000_Bluray_UHD_Datenbank_aktualisieren.sh
GenericName[de_DE]=
GenericName=
Icon=application-x-shellscript
MimeType=
Name[de_DE]=0000_Bluray_UHD_Datenbank_aktualisieren.sh
Name=0000_Bluray_UHD_Datenbank_aktualisieren.sh
Path=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
X-KDE-AutostartScript=true
X-KDE-SubstituteUID=false
X-KDE-Username=

Ich glaube nicht das es daran liegt.
Wenn ich auf Fehlgeschlagen gehe dann zeigt er mir folgendes an:

Dort ist immer wieder von einem EXEC-Fehler die Rede.

Könnt ihr was damit anfangen?

Nur mal so nebenbei… wenn Du nicht möchtest das jeder Deine Sammlung an Filmen einsehen kann,
dann solltest Du die entsprechenden Teile Deines Skriptes annonymisieren.

Danke für den Tip, aber das ist nicht meine Sammlung.
Es ist eine Sammlung von Schlüsseln und Titeln.
Da ich meine Bluray´s und UHD´s nicht direkt unter Linux laufen lassen kann, brauche ich sie.
Zur ständigen Aktualisierung lade ich sie normalerweise, beim starten, runter damit ich meine Scheiben wiedergeben kann
Ich nutze es nur damit VLC keine Probleme bei der Wiedergabe von Bluray und UHD´s hat.
Wenn ich es denn mal zum laufen bekomme, den VLC hat anscheinend noch einige Probleme damit - aber das ist ein anderes Thema..

Sieht aus, als wenn du entweder

  • keine Shebang-Zeile in deinem Skript hast (#!/bin/bash), oder
  • du musst in deiner Exec=-Zeile das voranstellen, also etwa Exec=bash /pfad/zum/skript.sh (s.a. The Exec key).

Ansonsten…

ich lese hier nur

cd ~/.config/aacs/ && wget -N --no-check-certificate [unkenntlich gemachte url]
unzip -o  keydb_deu.zip
cp keydb.cfg KEYDB.cfg

Da fehlt das shebang am Anfang der Datei, denn das ist nicht nur zur Zierde da.

#!/bin/sh

Ansonsten, hier mal ein anderes Beispiel

cd /tmp/some_tmp_dir                                 && \
curl -sS http://foo.bar/filename.zip > file.zip      && \
unzip file.zip                                                 

Beachte die Verknüpfung mit && sowie den Zeilenumbruch mit \. Außerdem wird mit > die herunterzuladene Datei direkt gepipet.

1 Like

ich sehe aber auch das scripte die ich mit der autostart Funktion von KDE zufüge nur ausgeführt werden wenn ich frisch boote nicht nach einem logout one reboot. (Habe das aber noch nicht genauer untersucht)

chmod 644 war leider Quatsch, das nimmt ja das executable-Bit raus. War aus Gewohnheit, weil das für normale, nicht ausführbare Dateien oft genommen wird.

Du müsstest schon chmod 755 machen, sonst ist das Skript kein Skript.

1 Like

um es genau zu sagen zeigt es exakt: “Exec format error” :wink: was auf den fehlenden shebang hindeuten würde. Ausführbar muss die Datei natürlich auch in den Dateirechten sein.. das kann auch über den Dateibrowser gesetzt werden.