Ⅰ linux c 编程:创建一个线程,监视某个目录,一旦目录里出现新的文件,就将文件转移到指定的目录里去。
/*头文件*/#define SRCPATH "srcpath/"#define DSTPATH "dstpath/"int movefile(){DIR *dir; struct dirent *dt; FILE *fp1,*fp2;char filename1[256],filename2[256];char buf[1024];int readsize,writesize;if((dir = opendir(SRCPATH)) == NULL){ printf("opendir %s error\n",SRCPATH); return -1;} memset(filename1,0,sizeof(filename1));strcpy(filename1,SRCPATH);memset(filename2,0,sizeof(filename2));strcpy(filename2,DSTPATH);while(1){while((dt = readdir(dir)) != NULL){ if(strcmp(dt->d_name,".")==0||strcmp(dt->d_name,"..")==0){ continue; }//如果这个目录里 还有目录,可以在这加判断//这里假设初始为空目录strcat(filename1,dt->d_name);strcat(filename2,dt->d_name);//如果进程资源较少可以直接用linux系统命令fp1 = fopen(filename1,"rb");if(fp1==NULL){printf("open %s failed /n",filename1);return -1;}fp2 = fopen(filename2,"wb");if(fp2==NULL){printf("open %s failed /n",filename2);fclose(fp1);return -1;}while((readsize = fread(buf,sizeof(buf),1,fp1))>0){//total += readsize;memset(buf,0,sizeof(buf));writesize = fwrite(buf,sizeof(buf),1,fp2);if(writesize!==readsize){printf("write error");return -2;fclose(fp1);fclose(fp2);}}fclose(fp1);fclose(fp2);rmdir(filename2);}}}int main(int argc,char **argv){pthread_t id1;int ret;ret = pthread_create(&id1, NULL, (void*)movefile, NULL);return ret;}自己调试下
Ⅱ linux下监听文件listener.ora在哪
1、一般在$ORACLE_HOME/network/admin目录下2、你可以find $ORACLE_HOME -name "listener.ora"3、也可以locate listener.ora
Ⅲ linux中用什么命令实现对目录文件变化的监控
|#!/bin/bashif [ ! -f check.txt ];then ls >check.txtelif [ ! -f check.old ];then mv check.txt check.old ls >check.txt diff check.txt check.old|grep '^>'|sed 's/>/deleted file:/g' diff check.txt check.old|grep '^<'|sed 's/</created file:/g'else mv check.txt check.old ls >check.txt diff check.txt check.old|grep '^>'|sed 's/>/deleted file:/g' diff check.txt check.old|grep '^<'|sed 's/</created file:/g'fi不知是不是你想要的。。。只实现监控新增的文内件和容删除的文件。
Ⅳ linux如何监控共享目录
什么方式共享的?100%了杀掉重启。
Ⅳ Linux如何监控目录下的文件情况,一旦有新文件就以硬链接的方式复制到其他目录
#! /bin/bash$FILE_LIST=$(find . -type f -cmin -5 -maxdepth 1)for file in ${FILE_LIST} ;do ln -f ${file} ~/tmp/${file}done ##其中find命令是核心##-type f表示只查找普通文件##-cmin -5表示只查找5分钟之内创建的文件##-maxdepth 1表示查找的目录深度,1表示只查找当前目录,如果不指定-maxdepth将递归查找##ln -f ${file} ~/tmp/${file}是将查找到的文件硬链接到~/tmp目录##你可以根据自己的需要再做相应的修改
Ⅵ linux下怎样用c语言做实时监控目录中文件数量变化的程序
有一个头文件叫inotify.h ,这是linux 内核中的一个特性,可以用来监控目录
Ⅶ 跪求linux 下的一个shell脚本来监控指定的目录及其子目录中的任何文件变化然后报告到指定记录文件。
我可以给你提供个思路,可以实现你的需求,同时你自己写出来也专是一个不错的学习机属会,我写过一个“一点触发多点生效”的shell脚本,应用到inotify技术,你可以参考下语法应用。http://hi..com/cong_rong520/blog/item/563ce16e8f0bc8e442169482.html
Ⅷ java如何在linux下监听某个目录下是否有文件改变
JDK 7 的nio2 WatchService可以监听文件系统。
Oracle官方教程链接 http://docs.oracle.com/javase/tutorial/essential/io/notification.html
样例代码:
importstaticjava.nio.file.StandardWatchEventKinds.*;Pathpath=Paths.get("/home");WatchServicewatchService=FileSystems.getDefault().newWatchService();WatchKeywatchKey=path.register(watchService,ENTRY_CREATE,ENTRY_DELETE,ENTRY_MODIFY);/*privatebooleannotDone=true;while(notDone){try{WatchKeywatchKey=watchService.poll(60,TimeUnit.SECONDS);List<WatchEvent.Kind<?>>events=watchKey.pollEvents();for(WatchEventevent:events){//.registerPathwatchedPath=(Path)watchKey.watchable();//returnstheeventtype=event.kind();//returnsthecontextoftheeventPathtarget=(Path)event.context();}if(!watchKey.reset()){…handlesituationnolongervalid}}catch(InterruptedExceptione){Thread.currentThread().interrupt();}}*/
Ⅸ Linux gcc或者g++编程 下如何监视文件夹中文件的改变
从编程实现上来说,linux下做这个事情,要比windows上做简单,windows上有相关API提供接口,比如VC下的ReadDirectoryChanges函数,但其实它的功能并不是很完善,我之前曾经做过一个windows下类似的工具,如果要做到很完善的功能,要涉及到windows底层驱动。而linux下做这个事情就简单多了,从内核2.6.13开始,inotify编程接口就已经被加入到系统内核中,用来监控文件系统事件,它能监控到的事件包含文件/文件夹的新建,删除,修改,属性被修改,打开等等,功能比windows API提供的要丰富得多。在linux下输入man inotify即可查看该接口的编程手册,要实现对某个文件夹的监控,只需要使用该接口提供的inotify_init, inotify_add_watch, inotify_rm_watch三个函数即可。具体可以网络inotify,很容易就能找到相关示例代码。
附Linux下inotify编程接口部分截图:
点击图片可以看大图。
未经允许不得转载:山九号 » linux监控文件目录|java如何在linux下监听某个目录下是否有文件改变