2009-02-24 12 views
1

Tout d'abord: je ne suis pas programmeur, ni gourou Linux, il suffit de travailler avec Linux, Oracle, scripts shell. Ma tâche actuelle consiste à surveiller une table dans Oracle (outil: sqlplus), et si elle contient une certaine ligne, alors regarder un répertoire Linux pour un fichier tmp croissant, et consigner ses attributs (par exemple ls -l), dans chaque 5 secondes.Besoin de surveiller le changement de répertoire, et d'effectuer une action

La partie la plus importante est la suivante: ce fichier tmp sera supprimé si l'enregistrement ci-dessus est supprimé de la table Oracle, et j'ai besoin les derniers contenus de ce fichier tmp.

Je ne peux pas contrôler les données Oracle, juste obtenu les droits de la requête.

Les outils disponibles sont: bash, awk, sed, une ancienne version de Perl, Ruby (pas 1.9 *), et python (2,5). Je n'ai pas de droits d'installation, donc la plupart des bibliothèques externes ne sont pas accessibles. Je sais que je peux exécuter certaines bibliothèques depuis mon $ HOME, mais je n'ai pas de connexion internet sur cette machine: donc je ne peux pas télécharger de bibliothèque.

Inotify n'est pas disponible (ancien noyau).

Une idée par où commencer/comment le faire? Merci d'avance.

Répondre

1

Ceci est laid et naïf ... mais ...

#!/bin/bash 

WASTHERE=0 
MONITORING=/tmp/whatever.dat 
LASTBACKUP=/tmp/mybackup.dat 
LOGFILE=/tmp/mylog.log 

# Just create an empty file to start with 
touch "$LASTBACKUP" 

while [ 1 ]; 
do 
     if [[ ! -e "$MONITORING" ]]; then 
       if [[ $WASTHERE -ne 0 ]]; then 
         echo "File is gone! Do something with $LASTBACKUP"; 
         WASTHERE=0 
       fi 
     else 
       WASTHERE=1 
       ls -l "$MONITORING" >> $LOGFILE 
       cp "$MONITORING" "$LASTBACKUP" 
     fi 

     sleep 5 
done 

La partie malheureuse à ce sujet est que si quelque chose se passe dans le fichier étant « surveillé » alors que le script dort (le contenu est écrit par exemple) et le fichier est ensuite supprimé avant que le script se réveille, le contenu nouvellement écrit ne sera pas dans la «sauvegarde».

+0

On dirait que j'ai besoin de quelque chose comme ça ... J'essaierai quand j'arriverai demain. –

+0

Basé sur votre idée, j'ai écrit ma version, merci pour votre aide. –

4

Que diriez-vous de créer un lien dur dans un autre répertoire, puis, lorsque le fichier « disparaît » dans l'emplacement d'origine, le lien dur aura toujours accès au contenu.

+0

Bonne idée, (c'est pourquoi j'avais upvoted), mais très probablement je n'ai pas accès en écriture sur le système de fichiers du fichier tmp. Je peux le vérifier au travail seulement ... –