Я мог бы использовать некоторую помощь в создании 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
и так далее. Команды отлично работают из командной строки, но ежедневная работа занимает много времени, и файлы становятся слишком большими, даже если они вращаются. Любая помощь будет принята с благодарностью, спасибо.
Это довольно странно, по умолчанию эти файлы должны вращаться psa-logrotate. Возможно, что-то происходит с пакетом logrotate или crontask.
Вот настройки по умолчанию для вращения журналов домена:
Спасибо всем за вашу помощь, конечный результат - потрясающий! 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. Протестировано и функционирует красиво!
Вы можете легко добиться того же результата, используя собственный 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);
}
Не могли бы вы использовать команду shell_exec
для выполнения следующих действий:
Пример:
<?php
$output = shell_exec('cat /dev/null > /var/www/vhosts/website.com /logs/access_log.webstat');
echo "<pre>$output</pre>";
?>
Затем просто создайте задание cron, чтобы запустить их с интервалом.
exec
.