Как написать PHP-скрипт для cronjob, который использует cat / dev / null> для сброса файлов журнала

1

Я мог бы использовать некоторую помощь в создании PHP-скрипта, который я мог бы добавить к cronjob, который включал бы несколько (от 10 до 15) команд, таких как:

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

и так далее. Команды отлично работают из командной строки, но ежедневная работа занимает много времени, и файлы становятся слишком большими, даже если они вращаются. Любая помощь будет принята с благодарностью, спасибо.

  • 0
    В чем конкретно вопрос? Как это сделать в php? Если это так, возможно, просто загляните в функцию php exec .
  • 3
    почему php? что-то такое простое обычно делается в bash.
Показать ещё 1 комментарий
Теги:
cron
plesk

4 ответа

0

Это довольно странно, по умолчанию эти файлы должны вращаться psa-logrotate. Возможно, что-то происходит с пакетом logrotate или crontask.

Вот настройки по умолчанию для вращения журналов домена: Изображение 174551

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');
    ?>

Затем загружается и устанавливается как cron с панели Plesk 12.5. Протестировано и функционирует красиво!

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);
}
0

Не могли бы вы использовать команду shell_exec для выполнения следующих действий:

Пример:

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

Затем просто создайте задание cron, чтобы запустить их с интервалом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню