Bash-Script funkioniert nicht im Aufgabenplaner (IPKG)

Status
Für weitere Antworten geschlossen.

pinolocke

Benutzer
Mitglied seit
17. Mrz 2012
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Hallo zusammen,

ich habe ein Script welches mir Fotos und Videos von der DigiCam in Datums-Ordner auf das NAS kopiert. Dabei wird nicht das Datum der Datei, sondern das Erstellungsdatum aus den Exiv-Daten verwendet. Exiv geht natürlich bei Videos nicht, weshalb ich dort 'mediainfo' benutze, was ich über IPKG installiert habe.
Das Script tut alles genauso wie es soll, wenn ich es über die SSH-Console ausführe. Jedoch wenn es vom Aufgabenplaner ausgeführt wird, funktioniert 'mediainfo' nicht.
Folgende Fehlermeldung erhalte ich:
Rich (BBCode):
ERROR: ld.so: object 'openhook.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.

Diese Dinge habe ich schon probiert:
  1. PATH-Variable geprüft
    Tatsächlich hatte sich ergeben, das die PATH nicht die Pfade "/opt/bin" und "/opt/sbin" enthielt. Daher habe ich in "/etc/profile" die beiden Pfade ergenzt (vorher waren diese nur in den .profile-Dateien in den home-Verzeichnissen vorhanden). Als das auch nicht half, habe ich die PATH-Variable direkt im Script erweitert - auch ohne Erfolg.
  2. auszuführenden User geändert
    Egal ob root, admin oder irgendein anderer User - alles ohne Erfolg.
  3. absoluten Pfad eingetragen
    Letzlich habe ich 'mediainfo' direkt den absoluten Pfad "/opt/bin" vorangestellt - aber auch ohne Erfolg.

Gibt es noch andere Stellen wo man die PATH-Variable definieren kann, oder liegt es gar nicht daran?
Hat jemand noch eine Idee?
Danke
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.782
Punkte für Reaktionen
3.746
Punkte
468
Wenn das Script interaktiv funktioniert, schau mal, was in /etc/profile und ~/.profile des ausführenden Benutzers noch alles drinsteht. Vielleicht wird noch mehr als nur die PATH-Anpassung daraus von deinem Script benötigt. Notfalls kannst du auch beide Login-Scripte von deinem Script aus komplett "sourcen" (also includen), macht man mit einem ". " davor.
Code:
. /etc/profile
. ~/.profile
...
 

Claus67

Benutzer
Mitglied seit
02. Aug 2007
Beiträge
58
Punkte für Reaktionen
0
Punkte
6
Hallo,
ich bekomme bei der Ausführung als root eines Scripts im Aufgabenplaner mit über IPKG installierte Funktionen (rsnapshot, ...) die gleiche Fehlermeldung:
Rich (BBCode):
ERROR: ld.so: object 'openhook.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
Der ERROR tritt offensichtlich nur in Zusammenhang mit OPT-Ware funktionen auf.

Ich habe die vorgeschlagenen Dateien:
Rich (BBCode):
. /etc/profile
. ~/.profile
...
um
Rich (BBCode):
LD_PRELOAD=/usr/lib/openhook.so
export LD_PRELOAD
ergänzt um das Laden zu erzwingen.

Leider erfolglos..... :(

Zwei Fragen:
1) Bei den vorgeschlagenen Dateien handelte es sich um eine Aufzählung, die mit "..." endet. Welche weitere Dateien kann ich versuchen?
2) Wenn es mit der LD_PRELOAD in den login-Scripten nicht funktioniert, macht es dann überhaupt Sinn diese zu Sourcen?

Sorry im Moment stehe ich auf dem Schlauch.....

Wer weiß Rat und kann helfen?

Danke

Claus
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.782
Punkte für Reaktionen
3.746
Punkte
468
Das "..." steht lediglich für das restliche Script. Ich weiß ja nicht, was dein Script macht und welche Pfade etc. es sonst so braucht.
Falls es ansonsten im Vordergrund funktioniert, sollte das Sourcen von /etc/profile und ~/.profile reichen, damit es auch per cron funktioniert.
Nimm doch mal
Code:
set > /tmp/xxx
env > /tmp/yyy
am des Anfangs des Scripts mit auf und vergleiche beide Dateien auf Unterschiede im Environment zwischen interaktivem und cron-Betrieb.
 
Zuletzt bearbeitet:

rumknapser

Benutzer
Mitglied seit
02. Mai 2013
Beiträge
329
Punkte für Reaktionen
6
Punkte
24
Nahm,

da ich ein gleiches Problem hatte, bin ich auf diesen Thread gestoßen, ebenso auf diesen ersten verzweifelten Hilferuf (Probleme mit Optware auf DSM 6.2.2.-> LD_PRELOAD cannot be preloaded) :)

Die hilfreiche Orientierung an den Umgebungsvariablen -wie von Benares vorgeschlagen- ist immer ein guter Anfang!

Da auf der Kommandozeile der im Skript angemeckerte Pfad auch nicht in der Pfadvariable PATH vorhanden war, konnte ich diese Baustelle schonmal abhaken.

Auch tauchte die Fehlermeldung nur bei Programmen auf, die ich via Optware/oPGK nachinstalliert habe. Ich hätte also suchen können, ob Synology die selben Programme auch irgendwo rumfliegen hat und diese dann hart verdrahten im meinem Skript, aber das wollte ich nicht.

Also weiter an der Fehlermeldung orientiert:

Diese Links waren hilfreich für das Verstehen, was überhaupt das Problem ist (Allesamt Englisch):
https://stackoverflow.com/questions...object-ld-preload-cannot-be-preloaded-ignored
https://stackoverflow.com/questions/426230/what-is-the-ld-preload-trick

Das System will also etwas (vor)laden, das zur Laufzeit nicht gefunden werden kann.
Ergo die Meldung:
Rich (BBCode):
/wat/auch/immer: error while loading shared libraries: watauchimmer.so: cannot open shared object file: No such file or directory
(Fehler während des Ladens einer geteilten Bibliothek, kann das geteilte Objekt watauchimmer.so nicht öffnen/finden)

Meine persönliche* Meldung lautete:
Rich (BBCode):
ld.so: object 'openhook.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
Als ich dann die in der Meldung angebebene Datei ins Skript via
Rich (BBCode):
export LD_PRELOAD=/usr/lib/openhook.so
eingebunden habe, kam sofort eine weitere Meldung nach dem Ausführen des Skripts im Aufgabenplaner:
Rich (BBCode):
/opt/bin/ffprobe: error while loading shared libraries: libapparmor.so.1: cannot open shared object file: No such file or directory
Also musste jetzt herausgefunden werden, wie ich mehrere Objekte via LD_PRELOAD exportieren kann. (Hier half https://stackoverflow.com/questions/8474363/specifying-multiple-files-with-ld-preload)
und nun sieht es in meinem Skript so aus:
Rich (BBCode):
export LD_PRELOAD=/usr/lib/openhook.so:/usr/lib/libapparmor.so.1
(Doppelpunkt als Trenner, wie bei der PATH-Variable)

Nun funktioniert es.

*Erst nach dem Lösen habe ich übrigens diese Zeile gefunden, die automatisch bei Starten eines Skrips via Aufgabenmanager auftaucht:
Rich (BBCode):
LD_PRELOAD=openhook.so

Dem aufmerksamen Leser fällt sofort auf, das da ein Pfad fehlt.... Wer nun überhaupt für das Erscheinen dieser Zeile verantwortlich ist, habe ich nicht herausgefunden. Wäre interessant zu wissen, denn falls es der Entwickler des Easy Bootstrap Installers ist, welches ja Optware / Entware auf die DS bringt, könnte man ihm Bescheid geben. Falls nicht...wird es wohl ein Mysterium bleiben....
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat