![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her. |
Mer UNIX og Linux Forum Emner Du kan finne nyttig
|
||||
| Tråd | Tråd startet | Forum | Svar | Siste innlegg |
| Rekursiv chmod som bare påvirker kataloger? | retrovertigo | UNIX for Advanced & ekspertbrukere | 1 | 06-22-2007 05:02 |
| Rekursiv pid script | jbarnhar | Shell programmering og Skripting | 3 | 05-02-2007 04:14 |
| Problemet med Rekursiv funksjon | Malle | Shell programmering og Skripting | 4 | 02-03-2007 10:40 |
| kataloger problem | yeah016 | UNIX for Dummies Spørsmål og svar | 2 | 07-22-2006 08:48 |
| grep Rekursiv kataloger | jagannatha | UNIX for Dummies Spørsmål og svar | 8 | 07-24-2003 05:00 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
Script problemet skyldes Rekursiv kataloger Hjelp vennligst
Hei alle sammen, jeg er på jakt etter en bedre løsning da den jeg har laget for min oppgave Oppgaven er: Opprette et automatisert skript som vil se etter Opplastinger i spesifisert katalog og flytte dem til en annen spesifisert Directory hvis filene er helt opp. Filene FTP'd til den angitte katalogen Flere FTPS kunne kjøre så vite om en bestemt FTP er fullført er vanskelig for meg å se etter Prosess-ID Jeg opprettet manuset oppført nedenfor, men kan se at problemer kan oppstå med Uploads of Trees for eksempel Dersom Last katalogen har følgende: Sitat:
så burde; t that mean at alle arkiv og sub kataloger under den katalogen bli helt opp, og også eldre enn den Age jeg leter etter? ...... Jeg håper at laget forstand .... Jeg tror ikke det er tilfelle skjønt .... Jeg håper det er en bedre måte å håndtere dette problemet. Thanks for being there. Code:
#!/bin/bash
#
#
# This script will be used to monitor uploads to a specified directory
# and move them to another directory for downloading.
#
# Things to consider:
# 1. Was the uploaded files uploaded in a sub directory.
# 2. Are the files being uploaded complete.
# 3. Move the files to the specified directory
# with the proper permissions.
#
#
#-------------------------------------------------------------------------------#
#
# Functions
#
#-------------------------------------------------------------------------------#
calc_time() {
AGE_LAST_CHANGED=`expr ${CURRTIME} - ${FILE_LAST_CHANGED}`
if [ ${AGE_LAST_CHANGED} -lt ${ACCEPTED_AGE} ];
then
OK_TO_MOVE=N
else
OK_TO_MOVE=Y
fi
}
check_date() {
FILE_LAST_CHANGED=`stat -t ${NEWFILE} |awk '{print $13}'`
}
#-------------------------------------------------------------------------------#
#
# Vairables will go here
#
#-------------------------------------------------------------------------------#
UPUSER=up_user
DOWNUSER=down_user
#
UPPATH=/home/Private/Uploads
DOWNPATH=/home/Private/Downloads
CURRTIME=`date +%s`
ACCEPTED_AGE=300 # 5 minutes of no activity according to date modified
for f in $( ls ${UPPATH} ); do
if [ -d ${UPPATH}/${f} ];
then
#--- Directory with Subfiles In it ---#
DIR=${UPPATH}/${f}
echo "${DIR} is a Directory"
DIRDATE=`date +%Y_%m_%d_%H%M%S`
NEWDIR=${DOWNPATH}/${f}_${DIRDATE}
NEWFILE=${DIR}
check_date
calc_time
# It appears that the directory has not been changed in the allowed timeframe (ACCEPTED_AGE)
# it is ok to create a new directory in the DOWNPATH now.
# set permissions of new directory to the download user
mkdir ${NEWDIR}
# This causes a problem by leaving the original Directory present in th UPLOADS directory.
for f2 in $(ls ${UPPATH}/$f ); do
NEWFILE=${DIR}/${f2} # Set becuase of check_date function
check_date
calc_time
if [ ${OK_TO_MOVE} = "Y" ];
then
mv ${NEWFILE} ${NEWDIR}
echo "mv ${NEWFILE} ${NEWDIR} "
else
echo "File date is too new to move better wait"
fi
chown -R ${DOWNUSER}:${DOWNUSER} ${NEWDIR}
done
else
#--- File is in Main Upload directory ---#
if [ -f ${UPPATH}/$f ]; then
NEWFILE=${UPPATH}/${f}
echo "${NEWFILE} is a file"
check_date
calc_time
if [ ${OK_TO_MOVE} = "Y" ];
then
mv ${NEWFILE} ${DOWNPATH}
echo "mv ${NEWFILE} ${DOWNPATH} "
chown ${DOWNUSER}:${DOWNUSER} ${DOWNPATH}/*
else
echo "File date is too new to move better wait"
echo "next pass of cronjob should move this file"
fi
fi
fi
done
|
|
||||
|
Hallo ... Jeg ville takle dette problemet i PERL, Men nå ønsket jeg å ta valg for å vite hvis filen opplastingen er ferdig ... Den vanlige måten å gjøre dette på er å ha den personen eller programvare som gjør opplastingen til RENAME (ftp REN kommando) til en annen katalog i samme filsystemet. Fordi en RENAME (som en MV flytte i skallet) bare endringer pekere, er prosessen øyeblikkelig og så hvis filen vises i den flyttet til katalogen, du vet det må være komplett ....
slik at for eksempel ... .. / uploaddir / commitdir Du laste opp filer til uploaddir og når opplastingen er ferdig med å utstede en kommando som ftp> REN uploadedfile commitdir / uploadedfile Din prosessen avstemninger commitdir, ikke uploaddir. Hvis en fil vises i commitdir, du vet det må være helt opp og lukket. |
|
||||
|
Hei quine, takk for svar,
Problemet jeg har er at jeg vil ha en cron-jobb kjøre dette skriptet og katalogen at filene flyttes til ikke er synlig eller tilgjengelig for uploader. Når filene er lastet opp og flyttet, opplasteren ikke lenger har tilgang til dem. (vel akseptere for de små tidsramme mellom cron jobber ca. 1-5 minutter max) En perl løsningen ville være akseptabel for meg, aksepterer jeg har kodet bare én modul i perl i mitt liv, har du sannsynligvis hørt om det ..... "Hello World" ![]() Shell scripting Jeg kan rotet igjennom som du kan se av manuset jeg har skrevet så langt. Så noen eksempel selv i perl ville tjene mitt problem. takk igjen |
![]() |
| Hugseliste |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|