gpt4 book ai didi

linux - 添加文件时运行 shell 命令

转载 作者:IT王子 更新时间:2023-10-28 23:56:26 24 4
gpt4 key购买 nike

我的 linux 机器上有一个名为 images 的文件夹。此文件夹连接到一个网站,该网站的管理员可以向该网站添加图片。但是,当添加图片时,我想要一个命令来运行调整目录中所有图片的大小。

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

最佳答案

我不知道人们是如何将内容上传到这个文件夹的,但是你可能想要使用比使用 inotify 监视目录技术含量低的东西。

如果协议(protocol)是 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"

只有当 vsftpd 成功保存文件时,UPLOAD 行才会被添加。您可以像这样在 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 的日志。

关于linux - 添加文件时运行 shell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10956668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com