2

我创建了一个简单的 bash 脚本来:查找一些文件并执行命令。此命令必须输出我需要为每次执行存储的内容。

所以,我有类似的东西:

find /some/folder/ -name "*txt" -exec /bin/sh -c "/path/command -x -f {} > {}.pdf" \;

因此,我将在/some/folder/中找到 txt 文件,并且对于每个文件,我将执行/path/command并将文件路径传递给/path/command的参数-f并将获得二进制文件,因此我只需要获取输出并添加一个后缀.pdf

问题是,当我手动执行此操作时,一切正常。但是当我把它放在一个cron中时,会发生这种情况:

  • 如果存在/some/folder/sample.txt我有一个/some/folder/sample.txt.pdf(所以,find>似乎工作正常)但似乎由/path/command 执行但没有-f /some /folder/sample.txt参数。
  • /path/command似乎没有得到-f /some/folder/sample.txt并在创建的/some/folder/sample.txt.pdf中输出一条警告消息,指示需要获取带有某些东西的-f参数。

请注意,再次,如果我通过命令行(而不是通过 cron)执行此操作,一切正常。

我在这里做错了什么吗?

谢谢你的支持。

4

1 回答 1

-1

您应该使用绝对 pthes。

'/usr/bin/find' 代替 'find'

要查看问题所在,请以这种方式调用命令行

env -i  mycommands ....

这将剥离您的会话环境并在非常类似于 cron 环境的环境中运行命令。

然后更正您在 crontab 中的输入。

于 2013-09-08T15:31:15.723 回答