Scrip läuft in der bash, nicht aber mit cron

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
mario m
Beiträge: 50
Registriert: 20.12.2003 18:24:59
Lizenz eigener Beiträge: GNU General Public License
Wohnort: CH

Scrip läuft in der bash, nicht aber mit cron

Beitrag von mario m » 31.12.2003 12:08:57

Hallo,

ich habe mir ein kleines script gebastelt, dass mir ein verzeichniss zuerst per zip packt, dann mit mkisofs ein iso mach und am schluss mit cdrecord auf die cd brennt...
<siehe code1>

dank der hilfe aus diesem forum funktioniert das ohne probleme, wenn ich es aus der bash aufrufe...
aber
wenn ich nun das script per cron starte läuft die sicherung nicht...
(das stetht in der crontab:)
40 22 * * * root /etc/backup/backup.sh

ich habe zu debugzwecken mal ein paar ausgaben in eine datei umgeleitet und festgestellt, dass der zip befehl der datei einen ziemlich willkürlichen namen gibt (ziQ816NI oder so...)

ich habe leider keine ahnung warum das nicht geth...
die "path" variable enthält die richtigen pfade, daran kann es nicht liegen...

e.v. ist es ein problem mit dem output von zip (reine vermutung!)

kann mir da jemand weiterhelfen??

gruss
mario m

p.s. allen ein gutes neues jahr!


Code: Alles auswählen

 CODE1
#Go to the backup dir
cd /tmp/backup


#Create the zip backup file
zip -r  backup_$(date +%d_%m_%y).zip /samba/


#Create the iso file
mkisofs -D -J -R -o backup_$(date +%d_%m_%y).iso ./backup_$(date +%d_%m_%y).zip


#Let's make the disc...

# 1. Delete the CD-RW
cdrecord dev=1,0,0 blank=fast speed=16


# 2. Burn the file...
cdrecord dev=1,0,0 driveropts=burnproof fs=2m speed=16 -eject backup_$(date +%d_%m_%y).iso


#Cleaning up the system
rm backup_$(date +%d_%m_%y).iso
rm backup_$(date +%d_%m_%y).zip

Benutzeravatar
ordoban
Beiträge: 3
Registriert: 24.12.2003 07:51:22
Wohnort: Leipzig

Beitrag von ordoban » 02.01.2004 20:16:40

Hallo Mario,

eventuell hilft folgende ERSTE Zeile:

Code: Alles auswählen

#!/bin/sh

Damit der Intepreter gefunden wird

Gruss
Dirk Langer
So schnell wie die Zeit vergeht, kann man gar nicht alt werden!

mario m
Beiträge: 50
Registriert: 20.12.2003 18:24:59
Lizenz eigener Beiträge: GNU General Public License
Wohnort: CH

Beitrag von mario m » 02.01.2004 21:06:43

hallo dirk

ich habe diese zeile beim kopieren vergessen..
sorry, aber eben, das steht drinn..!

gruss
mario

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 02.01.2004 21:53:15

Wie sieht es denn mit den Berechtigungen für /tmp/backup etc. aus? IIRC laufen cron-Prozesse unter einer bestimmten uid

Olaf Dietsche
Beiträge: 520
Registriert: 12.06.2003 23:18:50
Wohnort: Siegburg

Beitrag von Olaf Dietsche » 02.01.2004 22:22:05

Ausdrücke der Form $(date ...) kann /bin/sh nicht. Du mußt das entweder durch

Code: Alles auswählen

`date ...`
ersetzen oder in der ersten Zeile angeben, daß nicht sh sonder die bash verwednet werden soll

Code: Alles auswählen

#! /bin/bash

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 03.01.2004 02:57:37

Olaf Dietsche hat geschrieben:oder in der ersten Zeile angeben, daß nicht sh sonder die bash verwednet werden soll

Code: Alles auswählen

#! /bin/bash
/bin/sh ist normalerweise ein Symlink auf /bin/bash.

Olaf Dietsche
Beiträge: 520
Registriert: 12.06.2003 23:18:50
Wohnort: Siegburg

Beitrag von Olaf Dietsche » 03.01.2004 14:57:59

Das ist richtig, aber die bash verhält sich unterschiedlich, wenn sie als sh aufgerufen wird.

Code: Alles auswählen

man bash
...
       If  bash  is invoked with the name sh, it tries to mimic
       the startup behavior of historical  versions  of  sh  as
       closely as possible, while conforming to the POSIX stan­
       dard as well.  When  invoked  as  an  interactive  login
...
       not attempt to  read  any  other  startup  files.   When
       invoked  as sh, bash enters posix mode after the startup
       files are read.
...
       from ~/.bashrc, if that file exists and is readable.  It
       will  not  do  this if invoked as sh.  The --norc option
...
       Brace expansion introduces a slight incompatibility with
       historical versions of sh.  sh does not treat opening or
       closing  braces  specially when they appear as part of a
...
       There are  some  subtle  differences  between  bash  and
       traditional  versions of sh, mostly because of the POSIX
       specification.

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 04.01.2004 18:31:17

Olaf Dietsche hat geschrieben:Das ist richtig, aber die bash verhält sich unterschiedlich, wenn sie als sh aufgerufen wird.
Wieder etwas dazu gelernt. ;)

Antworten