ottscho
24.09.07, 08:12
Hallo Zusammen,
ich habe ein Scriptproblem und kann es nicht genau nachvollziehen.
Unter Suse 10 funktioniert es einwandfrei und unter Ubuntu nicht.
Wenn ich das Script von Hand ausführe, geht es auch, aber wenn ich es über den Cron laufen lasse, wird es einfach nicht fertig ausgeführt.
Vllt weiß jmd von euch weiter, anbei der Code:
#!/bin/csh
#----------------------------------------------------------------------------
set echo = 1
# Set global variables and
# environment for script
#-------------------------
unalias cd
set date = `date "+%Y.%h.%d %T"`
set date2 = `date "+%Y.%h.%d.%T"`
set back_dir = $cwd
##
set DBS_NAMES = ('genesis')
set DBS_PATHS = ('/work/twraid/dbs_genesis')
set EXPORT_TMP = /var/genesis
set SAVED_JOBS_LIST = /genesis/etc/saved_jobs
if (! -d $EXPORT_TMP/logs) mkdir $EXPORT_TMP/logs
if (-e $SAVED_JOBS_LIST) then
cp $SAVED_JOBS_LIST /tmp
mv $SAVED_JOBS_LIST $EXPORT_TMP/logs/saved_jobs.$date2
set jobs2export = (`cat $EXPORT_TMP/logs/saved_jobs.$date2`)
else
echo "No Jobs to Export" | tee -a $EXPORT_TMP/logs/auto_export.log
exit
endif
echo "Start: ---- ${date} -------" | tee -a $EXPORT_TMP/logs/auto_export.log
foreach jobname ($jobs2export)
# Check if job is genesislib
if ($jobname == "genesislib") continue
# Check in which database the job is
#-----------------------------------
echo "---------- Job: $jobname --------" | tee -a $EXPORT_TMP/logs/auto_export.log
echo "Date : $date" | tee -a $EXPORT_TMP/logs/auto_export.log
set dbs_found = ""
foreach dbs ($DBS_PATHS)
if (-d ${dbs}/jobs/${jobname}) then
set dbs_found = $dbs
echo "Job: $jobname found in $dbs_found" | tee -a $EXPORT_TMP/logs/auto_export.log
break
endif
end
# If the Job was not found
if ($dbs_found == "") then
echo "Error: Job: $jobname not found in a database" | tee -a $EXPORT_TMP/logs/auto_export.log
continue
endif
# Change to the database and tar the job
cd ${dbs_found}/jobs
echo "Creating Archive of Job: $jobname" | tee -a $EXPORT_TMP/logs/auto_export.log
tar cf $EXPORT_TMP/${jobname}.tar $jobname
# Change to the EXPORT_TMP dir and
# Gzip the tared job, unzip it and compare it
cd $EXPORT_TMP
echo "Compressing Jobarchive: ${jobname}.tar" | tee -a $EXPORT_TMP/logs/auto_export.log
gzip -c ${jobname}.tar > ${jobname}.tgz
echo "Uncompressing Jobarchive: ${jobname}.tgz" | tee -a $EXPORT_TMP/logs/auto_export.log
gunzip -c ${jobname}.tgz > ${jobname}.chk
# Compare the files
echo "Comparing files: ${jobname}.tar ${jobname}.chk" | tee -a $EXPORT_TMP/logs/auto_export.log
cmp -s ${jobname}.tar ${jobname}.chk
if ($status) then
echo "Error: Job: $jobname inconsistent" | tee -a $EXPORT_TMP/logs/auto_export.log
echo "Moving the files to the logs dir" | tee -a $EXPORT_TMP/logs/auto_export.log
mv ${jobname}* logs
else
rm ${jobname}.tar ${jobname}.chk
mv -f ${jobname}.tgz /work/twraid/tgz_tmp
echo "OK" | tee -a $EXPORT_TMP/logs/auto_export.log
endif
end
cd $back_dir
#***EOF***
Wie gesagt, wenn ich es von Hand ausführe, funktioniert es und das Script läuft komplett durch.Mit Cron bleibt es nach dieser Zeile stehen:
echo "Start: ---- ${date} -------" | tee -a $EXPORT_TMP/logs/auto_export.log
Das echo steht noch im Log, und dann ist vorbei.
Hoffen kann mir jmd von euch weiterhelfen.
Danke
Gruß
ottscho
ich habe ein Scriptproblem und kann es nicht genau nachvollziehen.
Unter Suse 10 funktioniert es einwandfrei und unter Ubuntu nicht.
Wenn ich das Script von Hand ausführe, geht es auch, aber wenn ich es über den Cron laufen lasse, wird es einfach nicht fertig ausgeführt.
Vllt weiß jmd von euch weiter, anbei der Code:
#!/bin/csh
#----------------------------------------------------------------------------
set echo = 1
# Set global variables and
# environment for script
#-------------------------
unalias cd
set date = `date "+%Y.%h.%d %T"`
set date2 = `date "+%Y.%h.%d.%T"`
set back_dir = $cwd
##
set DBS_NAMES = ('genesis')
set DBS_PATHS = ('/work/twraid/dbs_genesis')
set EXPORT_TMP = /var/genesis
set SAVED_JOBS_LIST = /genesis/etc/saved_jobs
if (! -d $EXPORT_TMP/logs) mkdir $EXPORT_TMP/logs
if (-e $SAVED_JOBS_LIST) then
cp $SAVED_JOBS_LIST /tmp
mv $SAVED_JOBS_LIST $EXPORT_TMP/logs/saved_jobs.$date2
set jobs2export = (`cat $EXPORT_TMP/logs/saved_jobs.$date2`)
else
echo "No Jobs to Export" | tee -a $EXPORT_TMP/logs/auto_export.log
exit
endif
echo "Start: ---- ${date} -------" | tee -a $EXPORT_TMP/logs/auto_export.log
foreach jobname ($jobs2export)
# Check if job is genesislib
if ($jobname == "genesislib") continue
# Check in which database the job is
#-----------------------------------
echo "---------- Job: $jobname --------" | tee -a $EXPORT_TMP/logs/auto_export.log
echo "Date : $date" | tee -a $EXPORT_TMP/logs/auto_export.log
set dbs_found = ""
foreach dbs ($DBS_PATHS)
if (-d ${dbs}/jobs/${jobname}) then
set dbs_found = $dbs
echo "Job: $jobname found in $dbs_found" | tee -a $EXPORT_TMP/logs/auto_export.log
break
endif
end
# If the Job was not found
if ($dbs_found == "") then
echo "Error: Job: $jobname not found in a database" | tee -a $EXPORT_TMP/logs/auto_export.log
continue
endif
# Change to the database and tar the job
cd ${dbs_found}/jobs
echo "Creating Archive of Job: $jobname" | tee -a $EXPORT_TMP/logs/auto_export.log
tar cf $EXPORT_TMP/${jobname}.tar $jobname
# Change to the EXPORT_TMP dir and
# Gzip the tared job, unzip it and compare it
cd $EXPORT_TMP
echo "Compressing Jobarchive: ${jobname}.tar" | tee -a $EXPORT_TMP/logs/auto_export.log
gzip -c ${jobname}.tar > ${jobname}.tgz
echo "Uncompressing Jobarchive: ${jobname}.tgz" | tee -a $EXPORT_TMP/logs/auto_export.log
gunzip -c ${jobname}.tgz > ${jobname}.chk
# Compare the files
echo "Comparing files: ${jobname}.tar ${jobname}.chk" | tee -a $EXPORT_TMP/logs/auto_export.log
cmp -s ${jobname}.tar ${jobname}.chk
if ($status) then
echo "Error: Job: $jobname inconsistent" | tee -a $EXPORT_TMP/logs/auto_export.log
echo "Moving the files to the logs dir" | tee -a $EXPORT_TMP/logs/auto_export.log
mv ${jobname}* logs
else
rm ${jobname}.tar ${jobname}.chk
mv -f ${jobname}.tgz /work/twraid/tgz_tmp
echo "OK" | tee -a $EXPORT_TMP/logs/auto_export.log
endif
end
cd $back_dir
#***EOF***
Wie gesagt, wenn ich es von Hand ausführe, funktioniert es und das Script läuft komplett durch.Mit Cron bleibt es nach dieser Zeile stehen:
echo "Start: ---- ${date} -------" | tee -a $EXPORT_TMP/logs/auto_export.log
Das echo steht noch im Log, und dann ist vorbei.
Hoffen kann mir jmd von euch weiterhelfen.
Danke
Gruß
ottscho