Я написал скрипт, который изменяет количество записей истории задач Proxmox VE (около года истории) с помощью cron. Как работает скрипт: Этот скрипт автоматически увеличивает количество записей истории задач Proxmox VE, изменяя параметр `$maxsize` в файле `/usr/share/perl5/PVE/RESTEnvironment.pm`. По умолчанию этот параметр ограничивает историю задач примерно 1000 записями (`$maxsize = 50000`). Скрипт изменяет его, чтобы разрешить 20 000 записей (`$maxsize = 1000000`).
**Основные возможности:**
* Проверяет существование целевого файла.
* Ищет конкретную строку `$maxsize`.
* Если строка найдена:
* Создает резервную копию оригинального файла с временной меткой.
* Заменяет строку обновленным значением `$maxsize`.
* Записывает действие в журнал journald.
* Перезапускает необходимые службы Proxmox (pvedaemon и pveproxy).
* Автоматически запускается при загрузке системы и каждый час с помощью cron.
**Создайте скрипт по адресу `/etc/cronscripts/change_pve_task_history_size/update_pve_max_task_history_size.sh`:**
```bash
#!/bin/bash
# /etc/cronscripts/change_pve_task_history_size/update_pve_max_task_history_size.sh
# Путь к файлу RESTEnvironment.pm
FILE="/usr/share/perl5/PVE/RESTEnvironment.pm"
# Строки поиска и замены
SEARCH="my \$maxsize = 50000; # about 1000 entries"
REPLACE="my \$maxsize = 1000000; # about 20000 entries, around 1 year task history"
# Проверка существования файла
if [[ -f "$FILE" ]]; then
# Проверка наличия целевой строки в файле
if grep -qF "$SEARCH" "$FILE"; then
logger -t change_pve_task_history_size "Строка найдена в $FILE. Замена '$SEARCH' на '$REPLACE'."
# Создание резервной копии файла
BACKUP_FILE="$FILE.$(date +%Y%m%d_%H%M%S)"
cp "$FILE" "$BACKUP_FILE"
logger -t change_pve_task_history_size "Резервная копия создана: $BACKUP_FILE"
# Замена целевой строки в файле
sed -i "s|$SEARCH|$REPLACE|" "$FILE"
logger -t change_pve_task_history_size "Строка успешно заменена в $FILE."
# Перезапуск служб Proxmox
systemctl restart pvedaemon.service pveproxy.service
logger -t change_pve_task_history_size "Службы перезапущены."
else
logger -t change_pve_task_history_size "Строка поиска не найдена в $FILE. Изменения не внесены."
fi
else
logger -t change_pve_task_history_size "Файл $FILE не существует!"
fi
```
**Создайте файл cron job по адресу `/etc/cron.d/change_pve_task_history_size`:**
```bash
# Cron job для обновления размера истории задач Proxmox
# /etc/cron.d/change_pve_task_history_size
@reboot root /etc/cronscripts/change_pve_task_history_size/update_pve_max_task_history_size.sh
0 * * * * root /etc/cronscripts/change_pve_task_history_size/update_pve_max_task_history_size.sh
```
**Протестируйте скрипт:**
Запустите скрипт вручную, чтобы убедиться в его работоспособности: `/etc/cronscripts/change_pve_task_history_size/update_pve_max_task_history_size.sh`
**Проверьте журналы:**
Просмотрите журналы в journald: `journalctl -t change_pve_task_history_size`
**Пример вывода журнала:**
```
Jan 06 12:00:00 hostname change_pve_task_history_size[1234]: String found in /usr/share/perl5/PVE/RESTEnvironment.pm. Replacing 'my $maxsize = 50000; # about 1000 entries' with 'my $maxsize = 1000000; # about 20000 entries, around 1 year task history'.
Jan 06 12:00:00 hostname change_pve_task_history_size[1234]: Backup created: /usr/share/perl5/PVE/RESTEnvironment.pm.20250106_120000
Jan 06 12:00:00 hostname change_pve_task_history_size[1234]: String replaced successfully in /usr/share/perl5/PVE/RESTEnvironment.pm.
Jan 06 12:00:01 hostname change_pve_task_history_size[1234]: Services restarted.
```