You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible通过文件名列表删除thumbor缓存文件失败问题排查

问题:Ansible清理Thumbor缓存指定文件失败

已获取待删除文件的SHA1哈希文件名列表,执行下方Ansible任务后,任务标记为已变更,但实际文件未被删除。这些文件位于两层子目录下,请问该shell脚本是否存在问题?

原Ansible任务

shell: find . -name {{ item }} -exec rm \"{}\" \\;
args:
  chdir: \"{{ thumbor_data_path }}\"
ignore_errors: true
loop:
  - deletion_hash
when: file_url is defined and deletion_hash | length > 0

deletion_hash列表示例

"msg": [
    "115b744b9f6b23bbad3b6181c858cb953136", 
    "f52f17b2cca937e5586751ff2e938979890b", 
    "1c39661a0925b3cdb3b524983aaf6cccd6ee", 
    "1afc79a9e0e3c07ff0e95e1af3b5cb7ae54c", 
    "424e9159fe652f47c8e01d0aa85a86fbefed", 
    "11e4994789f24537d6feea085d2bf39c355b", 
    "a1d2fe0e122d37555df4062d4c0a5d10b651", 
    "aef976fc897a87091be5a8d5a11698e19591", 
    "e79f3ee1e6ccb3caff288b0028e031d75d77", 
    "9448e5e49679c908263922debdffff68eecb", 
    "a3933be52277a341906751c3da2dfb07ccd8", 
    "bef3370862a7504f7857be396d5a3139f5c0", 
    "8cc0cbe847234af96c0463d49c258c85d50f", 
    "1e7bf6110dcf994d1270682939e14416fc6e", 
    "d21dae2c047895129e7c462f6ddc4e512a58", 
    "c107b29b3185171ec46b479352fab6c97ad2"
]

问题分析与修正

核心问题

  • 循环遍历错误:原任务loop中写- deletion_hash,只会循环一次,遍历的是字符串deletion_hash而非列表中的每个哈希值,相当于执行find . -name deletion_hash ...,自然找不到目标文件。
  • 命令引号与转义问题:{{ item }}未加引号,且-exec rm的转义写法在Ansible shell模块中可能被解析错误,导致实际执行命令不符合预期。
  • 命令效率问题:find ... -exec rm不如直接用find ... -delete简洁高效,还能避免转义麻烦。

修正后的Ansible任务

shell: find . -name "{{ item }}" -delete
args:
  chdir: "{{ thumbor_data_path }}"
ignore_errors: true
loop: "{{ deletion_hash }}"
when: file_url is defined and deletion_hash | length > 0

补充说明

原任务标记为“已变更”是因为find命令即使没找到文件,退出码也是0,Ansible会判定命令执行成功,因此标记任务有变更,但实际未删除任何文件。修正后,循环会遍历每个哈希值,find找到对应文件后直接删除,确保操作生效。

内容的提问来源于stack exchange,提问作者Shuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 18:05:25