Все это должно быть выполнимо в файле запуска /etc/rc.local
, который запускается в конце каждого уровня запуска.
Чтобы смонтировать в /var /log, вам нужно будет остановить любой процесс, у которого есть файлы, открытые в каталоге log, смонтировать и затем перезапустить их. Я предлагаю добавить следующую строку в ваш скрипт rc.local
, чтобы он работал при загрузке:
lsof | grep /var/log | awk '{ print $1 }' | uniq > /root/logs_open
lsof
перечисляет все открытые файлы. Затем мы отфильтровываем все строки, которые не ссылаются на /var /log (grep /var/log
). Мы печатаем только первый столбец (имя процесса) результата (awk '{ print $1 }'
), сохраняя только одну копию каждого (uniq
) и отправляя вывод в файл (> /root/logs_open
). Вам нужно будет что-то добавить в файл запуска, чтобы остановить эти процессы перед монтированием раздела и перезапустить их после слов. Получив эту информацию, удалите эту строку из rc.local, и мы можем начать.
Во-первых, нам нужно сделать все, что вам нужно, чтобы создать виртуальный диск. Может быть, вы делаете сценарий для этого.
/root/create_ramdisk.sh
Чтобы создать файловую систему ext3, вы запускаете:
mkfs.ext3 /dev/rb
Затем остановите любой процесс, который регистрирует.
service apache2 stop
Теперь мы можем смонтировать на /var /log
mount /dev/rb /var/log
Запустите обратно процессы, которые мы остановили ранее
service apache2 start
Наконец, rc.local должен выйти со статусом 0, иначе произойдет Bad Things ™.
exit 0
rc.local
:
/root/create_ramdisk.sh # example purposes only
mkfs.ext3 /dev/rb # create the filesystem
system apache2 stop # stop processes with open log files
mount /dev/rb /var/log # mount
system apache2 start # restart anything we stopped before
exit 0 # important!!! rc.local must exit successfully or Bad Things (tm) happen
Надеюсь, это поможет.