ack 在 cronjob 中失败,但从命令行运行良好

ack fails in cronjob but runs fine from commandline

我使用 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 启动脚本。没有影响。

我做错了什么?

编辑以获取更多信息:

  1. 这应该有效:

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