Shell Script wird nicht ausgeführt

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Caipirinha, 25.08.2011.

  1. #1 Caipirinha, 25.08.2011
    Caipirinha

    Caipirinha Jungspund

    Dabei seit:
    02.06.2010
    Beiträge:
    11
    Zustimmungen:
    0
    Hallo,

    ich bräuchte mal einen kleinen Denkanstoß.
    Meine Erfahrungen mit cron und Shellscripts sind eher rudimentär.

    Ein kleiner Einzeiler soll per cronjob jeden Tag um 1:50 Uhr morgens die jüngste Datei (cronologisch geordnet) auf Band sichern.

    Code:
    #!/bin/sh
    
    tar cvf /dev/st0 /BACKUP/files/bpo/$(ls /BACKUP/files/bpo|tail -1)



    Auszug aus /var/log/messages
    Code:
    Aug 25 01:50:01 backup01 /usr/sbin/cron[14715]: (root) CMD (/BACKUP/cronjobs/daily_tape_backup.sh)
    Das Script wird ausgeführt, allerdings werden keine Daten auf Band geschrieben.

    Wenn ich das Script manuell ausführe wird es ganz normal ausgeführt.

    Weiß jemand warum das so ist?

    Grüße

    Caipi
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 bitmuncher, 25.08.2011
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Lass doch den Output des Crons einfach mal loggen:

    Code:
    /BACKUP/cronjobs/daily_tape_backup.sh > /var/log/tape_backup.log 2>&1
    Damit bekommst du dann mit, ob irgendwelche Fehler auftreten.

    Im übrigen kannst du auf das Skript auch verzichten und den Befehl einfach direkt in die Crontab eintragen, wenn es eh nur um einen Einzeiler geht.
     
  4. #3 Caipirinha, 25.08.2011
    Caipirinha

    Caipirinha Jungspund

    Dabei seit:
    02.06.2010
    Beiträge:
    11
    Zustimmungen:
    0
    Hallo bitmuncher, danke für den Tipp mit dem log: 'Permission Denied', der benutzer hatte keine Rechte das Script auszuführen... manchmal sieht man den Wald vor lauter Bäumen nicht.
     
  5. #4 Caipirinha, 26.08.2011
    Caipirinha

    Caipirinha Jungspund

    Dabei seit:
    02.06.2010
    Beiträge:
    11
    Zustimmungen:
    0
    Hi, nochmal ne Frage zu dem Script:

    Leider klappt es immernoch nicht so ganz. Das Script hat die falsche Datei gesichert (also eine von vorgestern).
    Habe es jetzt nochmal angepasst um wirklich nur die letzte Datei zu bekommen:

    Code:
    #!/bin/sh
    
    tar cvf /dev/st0 /BACKUP/files/bpo/$(find /BACKUP/files/bpo/ -maxdepth 1 -type f -printf "%f\n" | sort | tail -1) > /var/log/tape_backup.log 2>&1
    
    Beim manuellen ausführen gibt es keine Probleme. Über cron wird der Job allerdings nicht ausgeführt. Es erscheint auch kein log, kein Prozess... cron macht einfach nichts.

    Auszug aus /var/log/messages
    Code:
    Aug 26 15:42:01 backup01 /usr/sbin/cron[28958]: (root) CMD (/BACKUP/cronjobs/daily_tape_backup2.sh)
    
    Gibt es eine Möglichkeit den cron demon manuell zu starten ohne die eingetragenen Zeiten abzuwarten?

    Gruß Caipi
     
  6. #5 bitmuncher, 26.08.2011
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Trag doch den Job einfach temporär nochmal ein und setze dort eine Zeit, die dir passt. So musst du zum Testen nur diesen Eintrag ändern und kannst das Skript z.B. alle 5 Minuten aufrufen lassen. Wenn du mit Testen fertig bist, entfernst du den Eintrag dann einfach wieder.
     
  7. #6 Caipirinha, 28.08.2011
    Caipirinha

    Caipirinha Jungspund

    Dabei seit:
    02.06.2010
    Beiträge:
    11
    Zustimmungen:
    0
    Hallo,

    langsam wirds ziemlich kurios.

    Ziel ist es die jüngste Datei in einem verzeichnis auf Band zu sichern.

    Code:
    backup01:~ # ls -lh /BACKUP/files/bpo/
    total 544G
    -rw-r--r-- 1 root root  35G Aug 16 00:19 bpo_files_backup_2011-08-15.tar
    -rw-r--r-- 1 root root  57G Aug 17 00:54 bpo_files_backup_2011-08-16.tar
    -rw-r--r-- 1 root root  37G Aug 18 00:19 bpo_files_backup_2011-08-17.tar
    -rw-r--r-- 1 root root  56G Aug 19 00:53 bpo_files_backup_2011-08-18.tar
    -rw-r--r-- 1 root root  38G Aug 20 00:19 bpo_files_backup_2011-08-19.tar
    -rw-r--r-- 1 root root  62G Aug 23 01:11 bpo_files_backup_2011-08-22.tar
    -rw-r--r-- 1 root root  24G Aug 24 00:04 bpo_files_backup_2011-08-23.tar
    -rw-r--r-- 1 root root  60G Aug 25 01:13 bpo_files_backup_2011-08-24.tar
    -rw-r--r-- 1 root root  62G Aug 26 01:30 bpo_files_backup_2011-08-25.tar
    -rw-r--r-- 1 root root 117G Aug 27 03:19 bpo_files_backup_2011-08-26.tar
    
    In diesem Fall das File bpo_%_2011-08-26.tar

    Leider speichert das Script immer nur die Datei bpo_%_2011-08-23.tar aufs Band.

    Ich habe jetzt mehrere angehensweisen durchprobiert.

    Code:
    backup01:~ # cat /BACKUP/cronjobs/writetotape.sh
    #!/bin/sh
    
    #Speichern des zu sichernden Files in einer Datei
    find /BACKUP/files/bpo/ -maxdepth 1 -type f -printf "%f\n" | sort | tail -1 > /BACKUP/files/backupfile.txt
    
    #Speichern des Dateiinhalts in einer Variable.
    BACKUPFILE=`cat /BACKUP/files/backupfile.txt | tail -1`
    
    #BACKUPFILE=`find /BACKUP/files/bpo/ -maxdepth 1 -type f -printf "%f\n" | sort | tail -1`
    
    #Ausfuehren des Backup Befehls
    tar cvf /dev/st0 /BACKUP/files/bpo/$BACKUPFILE > /var/log/tape_backup.log 2>&1
    
    Hier sieht man das ich ein File erzeuge wo der Dateiname der zu sichernden Datei enthalten ist. Dieser wird mit cat in einer Variable gespeichert. Diese Variable setze ich dann im tar Vefehl ein um die jüngste Datei auf Band zu schreiben.

    Hier habe ich wieder das Problem, das wenn ich das Script manuell ausführe, es keinerlei Probleme gibt. Beim ausführen über cron allerdings funktioniert es nicht (richtig), weil die falsche Datei aufs band geschrieben wird.

    Hier noch die crontab:

    Code:
    #Crontab des users root.
    
    SHELL=/bin/sh
    
    PATH=/usr/local/bin:/usr/local/sbin:/sbin/:usr/sbin:/bin/:usr/bin:/usr/bin/X11
    
    #M      S       T M W Befehl
    #-----------------------------------------------
    0 23 * * 1-5 /BACKUP/cronjobs/files_backup.sh
    0 23 30 * 1-5 /BACKUP/cronjobs/delete_old_backups.sh
    #58 * * * * tar cvf /dev/st0 /BACKUP/files/bpo/$(find /BACKUP/files/bpo/ -maxdepth 1 -type f -printf "%f\n" | sort | tail -1) > /var/log/tape_backup.log 2>&1
    #3 * * * * /BACKUP/cronjobs/daily_tape_backup2.sh
    
    15 * * * * /BACKUP/cronjobs/writetotape.sh
    Ich gehe schwer davon aus das der Befehl find beim Aufruf über cron Probleme macht, da er für die korrekte Datei verantwortlich ist.
    Außerdem habe ich schon ausprobiert den Befehl find nicht in eine Datei, sondern direkt in eine Variable zu schreiben, mit dem selben Ergebnis.
    Es ist egal was ich mache. Immer kommt die falsche Datei hinten raus.

    Weiß jemand Rat?

    Schöne Grüße

    Caipi
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Shell Script wird nicht ausgeführt

Die Seite wird geladen...

Shell Script wird nicht ausgeführt - Ähnliche Themen

  1. Shell Script Problem

    Shell Script Problem: Hallo zusammen, ich arbeite momentan mit einem Plagiat Tool, die ich über Git Bash ausführe. Es wird im Endeffekt ein Link generiert, die ich...
  2. Shellscript für rotierende Datensicherung

    Shellscript für rotierende Datensicherung: Hallo, ich beschäftige mich erst seit ein paar Wochen mit der Shell und habe mich entschlossen meine ersten Scripterfahrungen in diesem kleinen...
  3. Shellscript unerwartetes Dateiende

    Shellscript unerwartetes Dateiende: Hallo zusammen, folgendes Script führe ich in einer .bat via cygwin und curl aus. Beim Ausführen erhalte ich die einen Syntaxfehler:...
  4. shell-script mit plink starten

    shell-script mit plink starten: Hallo, auf meinem kleinen QNAP-Backupserver möchte ich von meinem Windows 7 PC mittels Windows-Batch ein kleines shell script starten. So sieht...
  5. Einfaches Shellscript - dateinamen ändern

    Einfaches Shellscript - dateinamen ändern: Hey, kann mir jemand vielleicht bei diesem miniscript helfen? ich habe dateien die folgendermaßen aussehen MM-DD-YY-dateiname und...