Hello,All!
我有这样一个需求待实现:将某个文件拷贝到指定目录时,会触发某个脚本运行。
具体如下:
/trans目录下存在一些文件夹,比如flac2mp3,mkv2mp4
/trans
|------mkv2mp4
|------flac2mp3
当我把*.mkv文件拷贝到/format/mkv2mp4下时,让Linux自动调用mkv2mp4.sh脚本,进行格式转换:*.mkv -> *.mp4.
当我把*.flac文件拷贝到/format/flac2mp3下时,让Linux自动调用flac2mp3.sh脚本,进行格式转换:*.flac -> *.mp3.
目前解决方案:
通过systemd编写trans.path和trans.service实现
trans.path用于监控/trans/mkv2mp4/*.mp4和/trans/flac2mp3/*.flac
PathExistsGlob=/trans/mkv2mp4/*.mkv
PathExistsGlob=/trans/flac2mp3/*.flac
当以上两个目录中出现相应后缀文件时,systemd会自动启动trans.service。
trans.service会启动trans.sh脚本,trans.sh脚本中再调用mkv2mp4.sh/flac2mp3.sh进行转换
该解决方案存在的问题:
我先拷贝一个文件过去,转换开始,一切正常。这时,如果在前面一个文件还没转换完成时 ,我又拷贝了一个文件,这个后拷贝的文件不会再触发trans.service执行了,因为trans.service已经在running了。
希望得到的帮助:
有没有办法解决我现在这个方案中的问题。
或者,实现我这个需求有没有更好的方案。
寻求解决方案:文件触发脚本运行
- jiandan23
- 帖子: 86
- 注册时间: 2010-12-17 22:31
- 系统: Mint 19.2
- lilydjwg
- 论坛版主
- 帖子: 4252
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 寻求解决方案:文件触发脚本运行
建议用 inotifywait 或者 entr 或者 watchexec 或者 incron 来处理这个任务。