exec
我通过 PHP和 bash运行应用程序。我的问题是这会创建很大的日志文件。我只需要最后一个输出,不需要每秒所有活动的日志。
这是我的狂欢:
%s > %s 2>&1 & echo -n $! > %s
我应该如何修改以不附加输出文件并重写它?
完整的脚本是:
exec(sprintf("%s > %s 2>&1 & echo -n $! > %s", $cmd, $outputfile, $pidfile));
这是我的完整程序:
$kovNev = 'uid1_fil_'.time();
$cmd = 'btdownloadheadless --saveas /var/www/virtual/tigyisolutions.hu/boxy/htdocs/downloaded_torrent/'.$kovNev.'/ '.$_REQUEST["torrent"];
$outputfile = 'downloaded_torrent/folyamatok/'.$kovNev.'.txt';
$pidfile = 'downloaded_torrent/folyamatok/'.$kovNev.'_id.txt';
exec(sprintf("%s 2>&1 | tail > %s& echo -n $! > %s", $cmd, $outputfile, $pidfile));
答案1
> $outputfile
不追加但覆盖文件。>>
将附加到文件中。无论如何,当您使用 shell 构造时,您可以使用管道:
%s 2>&1 | tail > %s &
顺便说一句:这仅在路径不包含特殊字符时有效。更好的解决方案是:
'%s' 2>&1 | tail > '%s'& echo -n $! > '%s'
这可以防止路径中除了 ' 本身之外的所有问题。