如何编写使用cat / dev / null>的cronjob的PHP脚本重置日志文件

时间:2016-01-05 21:40:03

标签: php linux cron plesk

我可以使用一些帮助制作一个PHP脚本,我可以将其添加到包含多个(10到15)命令的cronjob中,例如:

line1: cat /dev/null > /var/www/vhosts/website.com
/logs/access_log.webstat  
line2: cat /dev/null > /var/www/vhosts/website.com/logs/big_access_log
line3: cat /dev/null > /var/log/plesk-roundcube/largefile.log

等等。这些命令在命令行中运行良好,但每天执行此操作非常耗时,即使文件正在旋转,文件也会变得太大。非常感谢任何帮助,谢谢。

4 个答案:

答案 0 :(得分:0)

您是否可以使用shell_exec命令来完成这些操作:

示例:

<?php
$output = shell_exec('cat /dev/null > /var/www/vhosts/website.com /logs/access_log.webstat');
echo "<pre>$output</pre>";
?>

然后只需创建一个cron作业,以间隔时间运行它们。

答案 1 :(得分:0)

使用本机PHP代码可以轻松实现相同的结果:

// The list of files to truncate
$listFiles = array(
    '/var/www/vhosts/website.com/logs/access_log.webstat',
    '/var/www/vhosts/website.com/logs/big_access_log',
    '/var/log/plesk-roundcube/largefile.log',
);

// Process all the files in the list
foreach ($listFiles as $filename) {
    // Open the file for writing ('w')
    // Truncate it to zero length if it exists, create it if it doesn't exist
    $fh = fopen($filename, 'w');
    // Close the file; this commits the new file size to the disk
    fclose($fh);
}

答案 2 :(得分:0)

谢谢大家的帮助,最终结果真是太棒了! 41个日志文件将不再增长到庞大的大小。实施如下:

PHP脚本编写如下:

    <?php
    $output = shell_exec('cat /dev/null > /var/www/vhosts/website.com/logs/access_log.webstat');
    $output = shell_exec('cat /dev/null > /var/www/vhosts/website.com/logs/big_access_log');
    $output = shell_exec('cat /dev/null > /var/log/plesk-roundcube/largefile.log');
    ?>

然后从Plesk 12.5面板上传并设置为cron。测试和 运作得很漂亮!

答案 3 :(得分:0)

这很奇怪,默认情况下,这些文件应该通过psa-logrotate旋转。 也许用logrotate包或crontask会发生一些事情。

以下是旋转域日志的默认设置: Plesk log rotate logrotate access.log error.log