我将Raspberry Pi设置为种子箱。我有一个每10分钟运行一次的cron作业,使用transmission-remote -l
检查已完成的文件,grep
检查已完成的条目(100%),获取文件夹的名称,将这些文件复制到外部驱动器,然后删除我的Pi上的原始文件。
对于已完成的每个操作(已添加torrent,已完成torrent,已启动文件传输,文件传输已完成且文件已被删除),条目将写入logfile.log
,它位于与所有脚本相同的目录中,'/ home / pi / dev /'。在该文件夹中,我有一个子文件夹logs
,可以保留从pi到外部驱动器的所有移动的日志文件。这些日志文件都是在移动文件夹/文件后命名的。
正如我所说,每隔10分钟,torrentfinished.php
就会通过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
重命名为其他内容,但我仍然遇到同样的错误。
我对于该怎么做没有更多的想法,所以如果你们有任何想法,请告诉我们!
答案 0 :(得分:1)
使用时:
php -f /home/pi/dev/torrentfinished.php
你留在/ home / pi / dev /目录。 logfile写在/ home / pi / dev / logs
在cron中运行脚本时,基本目录是另一个(例如,它可能是/ bin或/ usr / bin)。
尝试使用 DIR 或 FILE 常量来设置日志文件路径。
答案 1 :(得分:0)
查看实际的PHP代码可能会有所帮助。我在这里的第一步是让代码打印到logfile
的路径,这样我就可以找出它认为它不存在的原因(你是使用相对路径还是某个环境变量,因为cron倾向于运行消毒环境)。