首页 > 解决方案 > ack 在 cronjob 中失败,但从命令行运行良好

问题描述

我正在使用ack作为 bash 脚本的一部分从 mysqldump 构建 MP4 文件列表。转储文件约为 15mb。

这是我的台词:

ack -o "https??://cdn.host.com\S+?\.mp4" /home/me/.dump.sql > /home/me/.mp4-matches.txt

手动运行 bash 脚本时效果很好。我们得到这个.mp4-matches.txt

    https://cdn.host.com/url/t_Foo/Foo.mp4
    https://cdn.host.com/url/t_Bar/Bar.mp4

但是,当单独运行相同的命令作为 cronjob 时,它会生成一个空文件。

我不知道为什么它不能在 cron 中工作。

我尝试在 crontab 中摆弄 PATH、SHELL 等,以确保环境与手动运行相同。没有任何改变。

我已经尝试使用 crontab 中的所有硬路径/usr/bin/ack来确认。没有什么不同。

我试过用bash -l来启动脚本。没有什么不同。

我究竟做错了什么?

编辑以获取更多信息:

标签: bashcronack

解决方案


  1. 这应该有效:

    * * * * * ack -o "https??://cdn.host.com\S+?\.mp4" /home/me/.dump.sql </dev/null > /home/me/.mp4-matches.txt
    
  2. 您也可以将您的线路与--nofilter选项一起使用


推荐阅读