incrond 不执行 python 脚本
incrond doesn't execute python script
我需要在每个文件上 运行 一个 python 脚本,将其写入特定文件夹。
所以我在 /etc/incron.d/ 中创建了一个文件并添加了以下行:
/srv/ftp IN_CREATE /usr/bin/python3 /srv/parser.py $@/$# >> /var/log/parser/incron.log 2>&1
系统日志显示:
incrond[32630]: (system::parser) CMD (/usr/bin/python3 /srv/parser.py /srv/ftp/00008260_2015-12-09T17-31-36.csv >> /var/log/parser/incron.log 2>&1)
但是日志是空的,脚本什么也没做
我发现了问题:即使文件没有完全写入,IN_CREATE 也会触发,因此,当复制速度非常快时,它会起作用,比如将一个 10kb 的文件从一个文件夹复制到另一个文件夹,但是肯定不会结束 FTP,正确的事件是 IN_CLOSE_WRITE,它将在 ftp 服务器执行 fclose() 之后触发,其次 inconrd 不喜欢超过一个命令
因此以下工作:
/srv/ftp IN_CLOSE_WRITE /srv/parser.py $@/$#
我需要在每个文件上 运行 一个 python 脚本,将其写入特定文件夹。 所以我在 /etc/incron.d/ 中创建了一个文件并添加了以下行:
/srv/ftp IN_CREATE /usr/bin/python3 /srv/parser.py $@/$# >> /var/log/parser/incron.log 2>&1
系统日志显示:
incrond[32630]: (system::parser) CMD (/usr/bin/python3 /srv/parser.py /srv/ftp/00008260_2015-12-09T17-31-36.csv >> /var/log/parser/incron.log 2>&1)
但是日志是空的,脚本什么也没做
我发现了问题:即使文件没有完全写入,IN_CREATE 也会触发,因此,当复制速度非常快时,它会起作用,比如将一个 10kb 的文件从一个文件夹复制到另一个文件夹,但是肯定不会结束 FTP,正确的事件是 IN_CLOSE_WRITE,它将在 ftp 服务器执行 fclose() 之后触发,其次 inconrd 不喜欢超过一个命令
因此以下工作:
/srv/ftp IN_CLOSE_WRITE /srv/parser.py $@/$#