首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用特定FTP客户端时传入FTP传输未显示在lsof中

使用特定FTP客户端时传入FTP传输未显示在lsof中
EN

Server Fault用户
提问于 2014-07-04 11:24:06
回答 1查看 1.1K关注 0票数 2

我有一个脚本,可以持续监视FTP dropbox目录,并在新文件进来时处理它们。脚本在尝试处理每个文件之前对它运行lsof,以确定该文件是否仍在传输(有些文件很大,传输需要一段时间),以避免处理不完整的文件。

除了这个特定的FTP客户端,一切都很好。由于某些原因,当此客户端将文件上载到FTP服务器时,在该文件上运行lsof将不会返回任何内容。我测试了这一点,运行watch -n0.1 'lsof /path/to/file.txt',然后使用两个不同的file.txt客户端将'file.txt‘上传到服务器。当使用数码港上传时,lsof会返回有关打开文件的数据,而当使用其他FTP客户端时,lsof将不会返回任何数据。我不明白这是怎么回事( FWIW,使用fuser命令得到相同的结果)。我还在运行watch -n0.1 'ls -l /path/to/file',并且可以看到随着客户端的传输,文件的大小正在发生变化,所以我知道客户端正在写入文件。

我知道有解决我问题的解决办法,但我更感兴趣的是,这个FTP客户端如何在不打开文件的情况下写入文件,就系统而言。还有想法?

我正在UbuntuServer12.04LTS上运行vsftp

更新:

原来,当我在前面使用数码港进行测试时,我使用的是SFTP连接到FTP服务器,而不是FTP。当我使用FTP上传一个文件时,我遇到了同样的问题--文件上传,但是在lsof中什么也没有显示。我还使用Debian中的标准FTP客户端上传文件,使用PUT和APPEND-同样,也是一样的。

看起来,所有FTP上传(不管客户端)写到他们各自的文件,而不“打开”文件,就系统而言。我在另一个FTP服务器上测试了这个场景,所有的事情都像预期的一样工作--当文件被上传时,它们在lsof中显示为打开的。因此,我的FTP服务器的特定配置有问题。我怀疑这与lsof和/或vsftpd的版本有关。它们是较旧的版本,分别为4.81和2.3.2。

EN

回答 1

Server Fault用户

发布于 2014-07-04 13:09:06

除了STOR (PUT)之外,我们大多数人都知道并将使用一个相对少见的FTP命令将数据上传到远程服务器:附文

代码语言:javascript
复制
     APPEND (with create) (APPE)

        This command causes the server-DTP to accept the data
        transferred via the data connection and to store the data in
        a file at the server site.  If the file specified in the
        pathname exists at the server site, then the data shall be
        appended to that file; otherwise the file specified in the
        pathname shall be created at the server site.

可以允许客户端在不打开文件的情况下向文件中添加.

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/610160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档