在文件创build时执行一个bash脚本

在文件创build时执行一个bash脚本,第1张

概述在文件创build时执行一个bash脚本

我正在寻找写一个小的bash脚本,启动时,观看任何新创build的文件的目录。 如果出现新文件,我希望它的存在触发第二个脚本运行。

我看到这被用来触发压缩最近的数字化vIDeo,并将其添加到摄入的素材日志。

目前我的代码如下所示:

#!/bin/sh ##VIDSTAT is a global variable coming from a parent script. ##proj is the ingestion directory coming from a parent script proj=$1 dir="/home/$USER/data/movIEs/$proj" dirList=$(ls $dir) while { $VIDSTAT -eq 1 }: do for mov in $dirList do if [ "$(( $(date +"%s") - $(stat -c "%Y" $mov) ))" -lt "5" ] then ~/bin/compressNlog.sh $mov fi done done

是否有一个更简单/清洁/更less的内存密集的方式来做到这一点?

编写shell脚本来打印一定数量的具有特定参数的行

可能“循环”和“输出”不能在我的bash脚本中正常工作

bash脚本运行各种openssl密码来解密文件

batch file中的循环正在从文件读取错误的input – 循环失败

如何显示从FOR / F扩展的外部txt文件读取的系统variables?

编辑我将改变每个捕获会话的摄取目录。 我已经相应地调整了代码

一段时间后,如果没有input,则退出for循环

获取文件中不存在的文件中的值

合并两个文件中的文本,输出到另一个文件

禁用windows允许通过批处理循环为USB设备节电

windowsbatch file:循环行和拆分string

如何incron ? 它触发文件/目录更改命令。

sudo apt-get install incron

例:

<path> <mask> <command>

其中<path>可以是一个目录(意思是直接在该目录中的目录和/或文件(不是该目录的子目录中的文件!))或文件。

<mask>可以是下列之一:

IN_ACCESS file was accessed (read) (*) IN_ATTRIB Metadata changed (permissions,timestamps,extended attributes,etc.) (*) IN_CLOSE_WRITE file opened for writing was closed (*) IN_CLOSE_NowRITE file not opened for writing was closed (*) IN_CREATE file/directory created in watched directory (*) IN_DELETE file/directory deleted from watched directory (*) IN_DELETE_SELF Watched file/directory was itself deleted IN_MODIFY file was modifIEd (*) IN_MOVE_SELF Watched file/directory was itself moved IN_MOVED_FROM file moved out of watched directory (*) IN_MOVED_TO file moved into watched directory (*) IN_OPEN file was opened (*)

<command>是事件发生时应该运行的命令。 命令规范中可以使用下面的通配符:

$$ dollar sign $@ watched filesystem path (see above) $# event-related file name $% event flags (textually) $& event flags (numerically)

如果你看一个目录,那么$ @就会保存目录路径,而$#是触发事件的文件。 如果您观看一个文件,那么$ @将保存文件的完整路径,$#为空。

工作示例:

$sudo echo spatel > /etc/incron.allow $sudo echo root > /etc/incron.allow

启动守护进程:

$sudo /etc/init.d/incrond start

编辑incrontab文件

$incrontab -e /home/spatel IN_CLOSE_WRITE touch /tmp/incrontest-$#

测试它

$touch /home/spatel/Alpha

结果:

$ls -l /tmp/*Alpha* -rw-r--r-- 1 spatel spatel 0 Feb 4 12:32 /tmp/incrontest-Alpha

注意:在Ubuntu您需要在启动时激活inotify。 请在Grub menu.lst文件中添加以下行:

kernel /boot/vmlinuz-2.6.26-1-686 root=/dev/sda1 ro inotify=yes

使用iwatch 。 不完全是。 它将处理所有的守护进程的细节,在启动时运行,监视和记录,等等。 所有你需要做的就是设置选项,让你的bash脚本处理实际上对文件做些什么的细节。

你可以用神奇的inotify工具来做到这一点:

inotifywait -r -m ./YOUR_MONITORED_DIR | while read ab file; do [[ $b == *CREATE* ]] && ./another_script "$file" done

这种方法有很大的优势,可以避免每N秒轮询一次。

Inotify(inode notify)是一个linux内核子系统,用于扩展文件系统以注意对文件系统的更改,并将这些更改报告给应用程序。 它取代了一个早期的设备,dnotify,有相似的目标。

http://en.wikipedia.org/wiki/Inotify


请参阅inotify文档

总结

以上是内存溢出为你收集整理的在文件创build时执行一个bash脚本全部内容,希望文章能够帮你解决在文件创build时执行一个bash脚本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1286079.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存