2009-02-24 20 views
1

月1日:我不是程序员,也不Linux的大师,就必须使用Linux,甲骨文,shell脚本工作。需要监控目录的变化,并执行所有的动作

我目前的任务是监视Oracle(工具:sqlplus)中的一个表,如果它包含某一行,然后观察一个不断增长的tmp文件的linux目录,并记录它的属性(例如ls -l) 5秒。

最重要的部分就是:这tmp文件会如果上述记录从Oracle表中删除我需要这个tmp文件的最后内容被删除,。

我无法控制的Oracle数据,刚查询的权利。

可用的工具有:庆典时,awk,sed的,一些旧版本的Perl,红宝石(不1.9 *)和Python(2.5)。我没有安装权限,因此大多数外部库不可访问。我知道我可以从我的$ HOME运行一些库,但是我没有在该机器上连接互联网:所以无法下载任何库。

inotify的不可用(旧的内核)。

任何想法,开始/怎么办呢?提前致谢。

回答

1

这是丑陋和天真......但是

#!/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 

关于这个不幸的是,如果有什么事情发生被“监视”,而脚本正在睡觉的文件(内容被写入例如),然后在脚本被唤醒之前删除该文件,新写入的内容将不在“备份”中。

+0

看起来我需要的是这样的......能不能给一个尝试,当我在明天得到。 – 2009-02-24 22:28:50

4

如何创建在另一个目录中的硬链接,那么,当文件“消失”在原来的位置,硬链接仍然可以访问的内容。

+0

好主意,(这就是为什么我已经upvoted),但最有可能我没有在tmp文件的文件系统写访问。我可以在唯一的工作检查... – 2009-02-24 22:26:05