当前位置: 首页 > 面试题库 >

添加文件后运行shell命令

单于帅
2023-03-14
问题内容

我的Linux机器上有一个名为images的文件夹。此文件夹已连接到网站,该网站的管理员可以向该网站添加图片。但是,添加图片后,我希望命令运行所有图片的目录大小。

简而言之,我想知道在将新文件添加到特定位置时如何使服务器运行特定命令。


问题答案:

我不知道人们是如何将内容上传到此文件夹的,但是您可能想要使用比通过inotify监视目录更低的技术。

如果协议是FTP,并且您可以访问FTP服务器的日志,建议您在该日志中尾随以观察是否成功上传。与使用传统cron的轮询方法相比,这种事件触发的方法将更快,更可靠且负载更少,并且比使用inotify的方法更易于移植和调试。

当然,处理方式将取决于您的FTP服务器。我有一个正在运行的vsftpd,其日志包括这样的行:

Fri May 25 07:36:02 2012 [pid 94378] [joe] OK LOGIN: Client "10.8.7.16"
Fri May 25 07:36:12 2012 [pid 94380] [joe] OK UPLOAD: Client "10.8.7.16", "/path/to/file.zip", 8395136 bytes, 845.75Kbyte/sec
Fri May 25 07:36:12 2012 [pid 94380] [joe] OK CHMOD: Client "10.8.7.16", "/path/to/file.zip 644"

UPLOAD仅当vsftpd成功保存文件时,才添加该行。您可以在如下的shell脚本中对此进行解析:

#!/bin/sh

tail -F /var/log/vsftpd.log | while read line; do
  if echo "$line" | grep -q 'OK UPLOAD:'; then
    filename=$(echo "$line" | cut -d, -f2)
    if [ -s "$filename" ]; then
      # do something with $filename
    fi
  fi
done

如果您使用的是HTTP上传工具,请查看该工具是否具有用于记录传入文件的文本日志文件。如果它不考虑在其中添加某种记录器功能,那么它将生成您可以的日志tail



 类似资料:
  • 问题内容: 我可以使用它来获取命令的输出,该命令将在与可执行位置相同的路径中运行。 如何指定要在哪个文件夹中运行命令? 问题答案: 返回一个type值。是一个struct并具有一个字段: 因此,只需在调用之前进行设置: 另请注意,这特定于命令;允许您使用该标志传递路径,因此您也可以这样操作:

  • 问题内容: 我在一个应用程序上工作,但有一个关于从Java应用程序运行shell命令的问题。这是代码: 但是当我尝试执行命令时: myapp读取 为两个单独的参数。但是我只想读取一个参数。 当我直接从终端运行此命令时,它执行成功。 我试过,, 但对我没有工作。我如何才能将此参数作为一个参数读取。 问题答案: 我记得exec方法的重载分别为参数提供了一个参数。你需要用那个 对。就这个 只需将命令行和

  • 我想使用从gulp运行shell命令。我看到下面这个成语被用于gulpfile。 这是从吞咽任务中运行命令的惯用方法吗?

  • 问题内容: 我想在现有的CSV文件中添加一行标题,并在适当位置进行编辑。我怎样才能做到这一点? 我想结束 更改初始CSV输出不方便。 任何标准命令都可以。重要的是,文件已就地编辑,并且该行插入到文件的开头。 问题答案: 这将在文件的开头添加自定义文本:

  • 问题内容: 我不得不问这个问题而感到非常恼火,但我无法解决它。目前,我有一个项目: src /文件夹中的5个类 2个JARS在根文件夹中分别名为profiles.jar和classifier.jar 我想创建一个“ makefile”吗?或“批处理文件?” 从WINDOWS COMMAND LINE 编译并运行这些类,但首先将jar添加到buildpath?我不确定我该怎么做 当我尝试执行此操作时

  • 我正在使用Netbeans 8.2开发Spring应用程序。我遇到麻烦的这个应用程序是一个Spring Boot1.5.3应用程序。我有一个spring xml文件和一个application.properties保存在根项目目录下的/config中。 我正在通过批注和诸如之类的值属性将spring xml文件传递给我的项目。 当我单击Netbeans中的“Run Project”按钮时,我的Sp