我将 Raspberry Pi 设置为种子箱。我有一个 cron 作业,每 10 分钟运行一次,使用 transmission-remote -l
检查已完成的文件,使用 grep
查看已完成的条目 (100%),获取文件夹的名称,将它们复制到外部驱动器,然后删除我 Pi 上的原始文件。
对于完成的每个操作(添加一个 torrent、完成一个 torrent、开始文件传输、完成文件传输以及删除文件),一个条目将写入我的 logfile.log
,与所有脚本位于同一目录中,“/home/pi/dev/”。在该文件夹中,我有一个子文件夹 logs
,用于保存从 pi 到外部驱动器的所有移动的日志文件。这些日志文件都以被移动的文件夹/文件命名。
正如我所说,torrentfinished.php
每 10 分钟通过 cron 作业运行一次
*/10 * * * * php -f /home/pi/dev/torrentfinished.php
作业的所有输出都发送到我的邮箱 /var/mail/pi
。
现在,如果我手动运行脚本,我可以通过编写从任何地方运行它
php -f /home/pi/dev/torrentfinished.php
我在每个命令的执行正下方写了一些调试行。 (我使用 shell_exec 来运行命令,因为我更习惯用 php 编写而不是 bash)。
它会输出
Started transfer
Wrote transfer to logfile
然后在 logfile
中添加一个条目,文本为 $timestamp : started transfer of data from torrent $torrentname
。在 logs/$torrentname.log
中创建一个单独的文件。基本上,一切都很完美。
但是,当 cron 作业运行时,我在/var/mail/pi 中得到以下输出
Unable to open logfile: No such file or directory
Started transfer
Wrote transfer to logfile
但是正如您可能已经猜到的那样,没有任何反应。这些文件保留在它们在 Pi 上的位置并且不会被传输。此外,没有任何内容写入logfile
或logs/$torrentname.log
。
我一直在为此绞尽脑汁,并且一直在使用 chmod 777
处理比可能认为必要或安全的更多文件,只是为了确保这不是权限问题。我当然可能错过了一些东西,但我不这么认为。我也试过将文件 logfile
重命名为其他名称,但我仍然遇到同样的错误。
我不知道该怎么做,所以如果你们有任何想法,请告诉我!
最佳答案
当你使用它时:
php -f /home/pi/dev/torrentfinished.php
你留在/home/pi/dev/目录。日志文件写在/home/pi/dev/logs
当您在 cron 中运行脚本时,基本目录是另一个(例如它可能是/bin 或/usr/bin)。
尝试使用DIR 或FILE 常量来设置日志文件路径。
关于php - 使用 cron : Could not open logfile, 运行 php 脚本这样的文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26274466/