linux - 如何检测 Linux 服务器上的 ftp 上传完成?

标签 linux ftp inotifywait inotify-tools

我正在使用 inotify-tools在 CentOS 7 上在每次 ftp 上传时执行 php 脚本。

它工作正常,但有一个问题;当上传中止时(例如,如果我停止上传或关闭 FTP 客户端),它仍会触发脚本。

是否可以避免这些情况?

我的代码:

#!/bin/sh
MONITORDIR="/path/to/some/dir"
inotifywait -m -r -e close_write --format '%w%f' "${MONITORDIR}" | while read NEWFILE
do
    php /path/to/myscript.php ${NEWFILE}
done

最佳答案

问题是:您的 shell 脚本包含一系列命令。

但是您没有任何检查这些命令是否成功。你很惊讶他们都被处决了;即使一个失败了?!

根据您调用的这些工具的工作方式,只需添加即可

set -e

在调用任何命令之前(详见 here)

如果这还不行:一条一条地运行你的命令;并确定每一个是否失败;如果是这样;只需退出您的脚本!

关于linux - 如何检测 Linux 服务器上的 ftp 上传完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41056300/

相关文章:

c++ - WinInet CFtpConnection::openfile 多个文件

java - 使用 java : corrupted data 从 FTP 站点下载文件

c - Ncurses 在后台停止进程

linux - 拆分分隔符的第二次出现

php - 在 PHP 中创建文件并将其上传到 FTP 服务器而不在本地保存

linux - bash 读取 : group read results by timeout

docker - 在 docker 挂载的卷上进行 inotify (Mac/Linux)

linux - 分发和更新软件应用程序到 Linux envaranment

linux - 通过执行命令 setenv ipaddr "textbox"从 html 设置嵌入式系统的 IP 地址