Чистка логов\мусора в папке сервера hlds\amxmodx

ifx

Сообщения
331
Реакции
153
Помог
4 раз(а)
Устал руками чистить каждую неделю логи в папке logs (набегает около 300мб с 2ух серверов), решил поискать плагин и нашел вот такое чудо - https://forums.alliedmods.net/showthread.php?t=224691. Со слов автора чистит раз в неделю на автомате файлы в формате .logs и .ztmp

Собсна вопрос, а кто чем чистит файлы на сервере? Или может кто свой плагин написал\напишет для этого дела.
Спасибо.

PS Логи не отключаю, тк нужны для обработки и сбора статистики
 
Последнее редактирование:
Сообщения
3,561
Реакции
1,559
Помог
131 раз(а)
:dntknw:вручную чищу

(ну у меня на винде серв) в поиске вбиваю .log и просто ctrl + a, del
 

ifx

Сообщения
331
Реакции
153
Помог
4 раз(а)
g521, у меня линукс, мне не надо ничего объединять через тоталкоммандер и тп)
мне надо, чтоб логи сохранялись, но и чтобы они еще удалялись потом.
 
Сообщения
90
Реакции
126
Помог
3 раз(а)

ifx

Сообщения
331
Реакции
153
Помог
4 раз(а)
swank, о, спасибо
а на уровне амхх никто больше не реализовывал подобное, как из примера темы?
 
Сообщения
499
Реакции
270
Помог
6 раз(а)
Почитал эту тему и на секунду подумал, что я откуда-то с необитаемого острова) Первый раз слышу, что надо логи чистить. Они что, негативно влияют на работу сервера?
 

ifx

Сообщения
331
Реакции
153
Помог
4 раз(а)
CHEL74, хранить логи от серверов свыше недели, конкретно для меня не актуально
 
Сообщения
2,491
Реакции
2,795
Помог
61 раз(а)
ifx,
Код:
#include <amxmodx>

#define DAYS 7 // Количество дней которые игнорировать
#define TIMEOUT 15.0 // Таймаут перед запуском (чтобы избежать зависаний после смены карты)

public plugin_init() {
    register_plugin("Log Rotate", "0.1", "F@nt0M");
    set_task(TIMEOUT, "TaskRotate");   
}

public TaskRotate() {
    new path[128];
    get_localinfo("amxx_logs", path, charsmax(path));
    rotate(get_systime() - DAYS * 86400, path);
}

rotate(const time, path[]) {
    new file[64], FileType:type
    new dir = open_dir(path, file, charsmax(file), type, false);
    if (dir == 0) {
        return;
    }

    new fileTime, filePath[128];
    do {
        switch (type) {
            case FileType_File: {
                formatex(filePath, charsmax(filePath), "%s/%s", path, file);
                fileTime = GetFileTime(filePath, FileTime_Created);
                if (fileTime > 0 && fileTime < time) {
                    delete_file(filePath, false);
                }
            }

            case FileType_Directory: {
                if (!isDot(file)) {
                    formatex(filePath, charsmax(filePath), "%s/%s", path, file);
                    rotate(time, filePath);
                }
            }
        }
    } while (next_file(dir, file, charsmax(file), type) == 1);
    close_dir(dir);
}

bool:isDot(const path[]) {
    return bool:((path[0] == '.' && path[1] == EOS) || (path[0] == '.' && path[1] == '.' && path[2] == EOS));
}
 

ifx

Сообщения
331
Реакции
153
Помог
4 раз(а)
fantom, а в таком виде он трет логи только по пути amx_logs из amxmodx\logs или из папки cstrike\logs тоже?
 

ifx

Сообщения
331
Реакции
153
Помог
4 раз(а)
fantom, а можете допилить, чтобы удалял именно в cstrike/logs? тк именно там и собирается основная куча мусора под 200-300мб
в папке же amxmodx\logs там по минимуму, от силы 5-10мб набежит. Но опять же, если по коду это плюс\минус тоже самое что и в примере темы - то тогда оставлю тот плагин, спасибо за помощь в любом случае

А про amxx_logs была на оленях похожая тема да, этот вариант работает
 
Сообщения
2,491
Реакции
2,795
Помог
61 раз(а)
то тогда оставлю тот плагин, спасибо за помощь в любом случае
я так понимаю плагин работает без багов?
18 Сен 2018
Код:
#include <amxmodx>

#define DAYS 7 // Количество дней которые игнорировать
#define TIMEOUT 15.0 // Таймаут перед запуском (чтобы избежать зависаний после смены карты)

public plugin_init() {
    register_plugin("Log Rotate", "0.1", "F@nt0M");
    set_task(TIMEOUT, "TaskRotate");  
}

public TaskRotate() {
    new time = get_systime() - DAYS * 86400;
    rotate(time, "cstrike/logs");
    new path[128];
    get_localinfo("amxx_logs", path, charsmax(path));
    rotate(time, path);
}

rotate(const time, path[]) {
    new file[64], FileType:type
    new dir = open_dir(path, file, charsmax(file), type, false);
    if (dir == 0) {
        return;
    }

    new fileTime, filePath[128];
    do {
        switch (type) {
            case FileType_File: {
                formatex(filePath, charsmax(filePath), "%s/%s", path, file);
                fileTime = GetFileTime(filePath, FileTime_Created);
                if (fileTime > 0 && fileTime < time) {
                    delete_file(filePath, false);
                }
            }

            case FileType_Directory: {
                if (!isDot(file)) {
                    formatex(filePath, charsmax(filePath), "%s/%s", path, file);
                    rotate(time, filePath);
                }
            }
        }
    } while (next_file(dir, file, charsmax(file), type) == 1);
    close_dir(dir);
}

bool:isDot(const path[]) {
    return bool:((path[0] == '.' && path[1] == EOS) || (path[0] == '.' && path[1] == '.' && path[2] == EOS));
}

Стоит также отметить тот факт что плагин работает в основном потоке. Потому на время его работы возможны подлагивания из за большого количества файлов. Там есть заддержка после смены карты которая теоретически должна смягчить лагы. Также желательно чтобы поиск и удаление происходили во время разминки, когда это не сильно критично. Все же я настоятельно рекомендую использовать для таких целей специализированые утилиты вроде logrotate о котором говорил swank
 
Сообщения
265
Реакции
315
Помог
10 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
find /path_to_server -name *.log -type f -mtime +7 -exec rm -rf {} \;
/path_to_server - путь до сервера
+7 - удалять старше 7 дней с момента последнего изменения

добавляешь в cron и все
 
Сообщения
265
Реакции
315
Помог
10 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
fantom, ну по запросу в ТП, думаю, прописали бы задание в крон

ps ИМХО, такая опция на хостах должна быть искаропки в 2018 году
 
Сообщения
14
Реакции
3
neygomon, если бы... Арена шлёт куда подальше. Бери говорят vds и там хозяйничай. А так доступа у ТП к терминалу нет.
 

ifx

Сообщения
331
Реакции
153
Помог
4 раз(а)
fantom, спасибо огромное, потестирую обновленный плагин и отпишусь через 3-5 дней
neygomon, тоже хороший вариант, спасибо!
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу