Shell Skript funktioniert in der Konsole aber nicht bei der Aufgabenplanung?

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

ycmh1992

Gesperrt
Registriert
12. Nov. 2013
Beiträge
67
Reaktionspunkte
0
Punkte
0
Hi,

die folgenden Skripte funktionieren in der Konsole einwandfrei. In der Aufgabenplanung jedoch sehr unzuverlässig bis gar nicht. Woran liegt das? Gibt es einen Wikieintrag oder hier jemanden, der eine Info hat, auf was ich alles bei der Aufgabenplanung achten muss?

Vorab:
- Pfad zum Skript ist korrekt (andere Skripte laufen auch und liegen im gleichen Ordner)
- Pfade in den Dateien sind auch korrekt(sonst würde es in der Shell nit funzen)

Skript1:
cd "/volume1/Privat/Backups/Handybackup (Sync-Ordner)/Archivierung/Handy Sicherung"
YEAR=$(date +%Y)
MONTH=$(date +%m)
DAY=$(date +%d)
zip Handybackup_${YEAR}-${MONTH}-${DAY}.zip *.gz *.properties
mv Handybackup_${YEAR}-${MONTH}-${DAY}.zip "/volume1/Windows-Sicherung/Samsung Handy"

Skript2 (hier funktioniert das rm mal ja und mal nein):
rm -f "/volume1/Privat/Backups/Handybackup (Sync-Ordner)/Archivierung/Backup SMS/"temp_archive_backup_file.temp-journal
cp -f "/volume1/Privat/Backups/Handybackup (Sync-Ordner)/Archivierung/Backup SMS/"*.html "/volume1/Privat/Backups/Backup SMS"
cp -f "/volume1/Privat/Backups/Handybackup (Sync-Ordner)/Archivierung/Backup SMS/" "/volume1/Privat/Backups/Backup SMS/Sysdateien"

Über Hilfe würde ich mich freuen. Sitze da schon seit 2 Tage dran und probiere viel aus recherchiere nur mittlerweile weiß ich nit mehr weiter...

Danke!
 
Führen deine Scripte einen shebang an,

Code:
#!/bin/sh

Sind deine Scripte ausführbar (chmod 755)

Tommes
 
oder in der Aufgabenplanung nicht einfach das Skript eintragen, sondern
Rich (BBCode):
sh /pfadzumskript/deinskript.sh
was man dann übrigens nicht zwangsläufig mit root/admin starten muss, man kann auch einen beliebigen Nutzer nehmen, der Zugriff auf die Datei hat...

Stefan
 
Also das scheint nicht das Problem zu sein. Es wird immer nur eine Zeile ausgeführt. (Die letzte). Ich hab es eben getestet. Bei dem anderen Skript ist es leider auch so :( Woran liegt das bitte? Nocheinmal alles in eine Zeile mach ich nicht, danach durfte ich meine Synology neu einrichten...

#!/bin/sh
rm "/volume1/Privat/Backups/Handybackup (Sync-Ordner)/Archivierung/Backup SMS/"temp_archive_backup_file.temp-journal
cp -r "/volume1/Privat/Backups/Handybackup (Sync-Ordner)/Archivierung/Backup SMS/"*.html "/volume1/Privat/Backups/Backup SMS"
cp -r "/volume1/Privat/Backups/Handybackup (Sync-Ordner)/Archivierung/Backup SMS/"*.db "/volume1/Privat/Backups/Backup SMS/Sysdateien"
 
Also das scheint nicht das Problem zu sein. Es wird immer nur eine Zeile ausgeführt. (Die letzte). Ich hab es eben getestet. Bei dem anderen Skript ist es leider auch so :( Woran liegt das bitte? Nocheinmal alles in eine Zeile mach ich nicht, danach durfte ich meine Synology neu einrichten...

#!/bin/sh
rm "/volume1/Privat/Backups/Handybackup (Sync-Ordner)/Archivierung/Backup SMS/"temp_archive_backup_file.temp-journal
cp -r "/volume1/Privat/Backups/Handybackup (Sync-Ordner)/Archivierung/Backup SMS/"*.html "/volume1/Privat/Backups/Backup SMS"
cp -r "/volume1/Privat/Backups/Handybackup (Sync-Ordner)/Archivierung/Backup SMS/"*.db "/volume1/Privat/Backups/Backup SMS/Sysdateien"

Keine eine Idee woran das liegen könnte? :/
 
Ich bin weiß Gott kein Linux-Profi, aber meinst du, das die Anführungszeichen " in deinem Script richtig gesetzt bzw. überhaupt nötig sind?

Tommes
 
trotzdem könntest du Recht haben, Tommes... :D

rm "/volume1/Privat/Backups/Handybackup (Sync-Ordner)/Archivierung/Backup SMS/"temp_archive_backup_file.temp-journal"
cp -r "/volume1/Privat/Backups/Handybackup (Sync-Ordner)/Archivierung/Backup SMS/"*.html" "/volume1/Privat/Backups/Backup SMS"
cp -r "/volume1/Privat/Backups/Handybackup (Sync-Ordner)/Archivierung/Backup SMS/"*.db" "/volume1/Privat/Backups/Backup SMS/Sysdateien"

die roten Anführungszeichnen stehen da glaube ich an der falschen Stelle... die grünen müssten richtig sein... ich würde allerdings auf die Leerzeichen und die beiden Klammern verzichten, dann braucht man auch keine Anführungszeichen ;)

Stefan
 
..ich würde allerdings auf die Leerzeichen und die beiden Klammern verzichten, dann braucht man auch keine Anführungszeichen ;)

Also benötigt man die Anführungszeichen nur, wenn "Sonderzeichen bzw. Leerzeichen" verwendet werden? Ich hatte mich schon gewundert, warum da überhaupt Anführungszeichen gesetzt sind.

Tommes
 
ja, genau, die Leerzeichen würden sonst seltsam aufgelöst:
"Ein Verzeichnis mit Leerzeichen" wird zu Ein\ Verzeichnis\ mit\ Leerzeichen/ (was aber auch funktionieren würde)
Und da ich mir nicht merke :o, welche Klammern, Ampersand (&) und andere Sonderzeichen, auch noch in der Shellprogrammierung Bedeutung haben könnten, oder welche Sonder-Zeichen mir auf welchem Betriebssystem/Dateisystem um die Ohren fliegen, vermeide ich sie gleich...

Stefan
 
Ah, Super. Danke!

Ich erwische mich auch noch oft dabei die 8.3 Matrix bei Dateinamen anzuwenden sowie Leerzeichen in Verzeichnissen, wenn überhaupt mit einem _ oder - auszufüllen. Das sind halt noch meine Überbleibsel aus der DOS 5.0 Welt *g* Aber natürlich sind Sonder- sowie Leerzeichen natürlich hübsch anzusehen.

Hab grad auch mal meine Ubuntu 14.10 Partition auf meinem Ultrabook gebootet und spiel mal ein wenig auf der Konsole rum. Ich muß wirklich langsam mal anfangen, mich mit Linux stärker auseinanderzusetzen, da gibt es noch eine Menge, was es zu Lernen und zu Wissen gibt. Ist halt was anderes als DOS *lach* Da sieht man mal wieder, wie alt man geworden ist. Ok, jetzt aber Schluss mit dem OffTopic geschwafel!

Tommes
 
Ich sag mal so in der Shell funktioniert alles nur in der Aufgabenplanung wird immer nur eine Zeile ausgeführt egal was ich mache.. ich suche nach 3 Tagen schon nach einer Lösung :/ (Habe alles ausprobiert auch eure Vorschläge...)
 
Zuletzt bearbeitet:
du meinst das mit den Variablen? Das ist das einzige, was ich mir jetzt noch vorstellen kann. Wenn du angemeldet bist, sind die Variablen unter Umständen anders, als bei "nicht interaktivem" Ausführen...

Stefan
 
Nein, ich nutze Notepad++ um die Skripte zu schreiben und mache dann immer einen Zeilenumbruch vllt. kommt die Syno damit nicht klar. Siehe auf der 2. Seite der 2. Beitrag. Mein Englisch ist nicht ganz so gut, aber das wäre zumindest eine plausible Erkärung, weil wenn ich das komplette Skript so wie sie da stehen, mit Anführugszeichen etc. direkt in die Aufgabeplanung tue, funktioniert das alles einwandfrei genauso wie in der Shell.
 
Ich kann dir immer noch nicht ganz folgen. Poste doch einfach nochmal dein Script mit den aktuellen Änderungen.

...weil wenn ich das komplette Skript so wie sie da stehen, mit Anführugszeichen etc. direkt in die Aufgabeplanung tue, funktioniert das alles einwandfrei genauso wie in der Shell.

Wie genau meinst du das? Schreibst du das Script in den Aufgabenplaner oder den Pfad zum Script? Hattest du das vorher anders gemacht?
 
Zuletzt bearbeitet:
Sry, wie folgt:

#!/bin/sh
rm "/volume1/Privat/Backups/Handybackup (Sync-Ordner)/Archivierung/Backup SMS/"temp_archive_backup_file.temp-journal
mv "/volume1/Privat/Backups/Handybackup (Sync-Ordner)/Archivierung/Backup SMS/"* "/volume1/Privat/Backups/Backup SMS"


#!/bin/sh
cd "/volume1/Privat/Backups/Handybackup (Sync-Ordner)/Archivierung/Handy Sicherung"
YEAR=$(date +%Y)
MONTH=$(date +%m)
DAY=$(date +%d)
zip Handybackup_${YEAR}-${MONTH}-${DAY}.zip *.gz *.properties
mv Handybackup_${YEAR}-${MONTH}-${DAY}.zip "/volume1/OS-Sicherungen/Samsung Handy"
cd "/volume1/Privat/Backups/Handybackup (Sync-Ordner)/Archivierung"
rm "Handy Sicherung/"*

funktioniert einwandfrei, wenn ich es anstelle des Pfades zur .sh-Datei in das Feld Benutzerdefiniertes Skript in der Aufgabenplanung eintrage.

Mein Problem war ja zuletzt, dass von den beiden Skripten, wenn ich diese in der Aufgabenplanung nur mit Pfad angesprochen habe, nur eine Zeile der .sh-Datei ausgeführt wurde. In dem Englichen Synology Forum wird (siehe hier: http://forum.synology.com/enu/viewt...sid=a52056d5fbe93e5705f1cb6fb4bb37fe&start=15 ) beschrieben, dass ein Zeilenumbruch-Fehler oder so etwas auftritt und auf der 2. Seite im 2. Beitrag wird so weit ich das verstehe beschrieben, dass wenn man diese Skripte mit Windows erstellt solche Fehler auftreten, wenn man dort Zeilenumbrüche macht. Diese Erklärung würde auch zu meinem Problem passen, da nach der ersten Zeilen in den Skripten ich immer einen Zeilenumbruch gemacht habe (wenn man das in eine Zeile schreibt mit nur Leerzeichen haut es mir das OS kaputt).

Jetzt funktionieren die Skripte auch über die Aufgabenplanung. Was man nun beim editieren in Windows anders machen sollte, habe ich noch nicht herausbekommen.

Wie gesagt mein Englisch ist nicht das beste, also wenn ich etwas falsch interpretiert habe, korrigiert mich bitte :)

vG
 
Du musst einen Editor nutzen, mit dem Du einstellen kannst, mit welchen Zeilenenden die Dateien gespeichert werden sollen. Notepad++ ist so einer und kostet nichts. Dort musst Du dann Unix-Zeilenenden konfigurieren.
 
Den nutze ich sogar, aber das habe ich natürlich nicht konfiguriert. Ich werde das am WE mal testen und noch einmal Rückmeldung und auch eine kleine Anleitung geben :) - Danke für den Hinweis!
 
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