У меня есть сервисный манифест в Solaris (на самом деле Smart OS), и я хотел бы периодически очищать его файлы журнала автоматически или вручную, не выключая сервер.
Мой журнал здесь:
/var/svc/log/site-myapp-joyent-smartos-node-service-manifest-1:default.log
Есть ли способ очистить его, ограничить размер или переместить?
Я бы использовал logadm, чтобы повернуть журналы за вас. В последнем базовом образе (13.1.0) есть запись logadm по умолчанию для ротации журналов SMF (проверьте файл /etc/logadm.conf):
smf_logs -C 3 -c -s 1m /var/svc/log/*.log
Эта запись будет чередовать журналы службы SMF всякий раз, когда они достигают размера 1 м (-s 1 м), сохранять только 3 версии после каждого поворота (-C 3) и вращать журнал, копируя исходный файл журнала, а затем усекая его до нуля (-c ). Приятная вещь в приведенном выше описании заключается в том, что это определение logadm на основе шаблонов, поэтому вы можете запустить его вручную с помощью:
logadm smf_logs
В базовом образе 13.1.0 есть запись crontab (от имени пользователя root) для запуска logadm один раз в час.
10 * * * * /usr/sbin/logadm
Почасовой cron хорош для ротации на основе размера и помогает контролировать ситуацию, если некоторые журналы имеют тенденцию к довольно быстрому росту.
Вы можете сделать это, написав скрипт, а затем создав задание cron для периодического запуска скрипта.
любой открытый файл можно обнулить с помощью> file.name
удаление открытого файла не освободит хранилище файлов