В то время как то, что Вы отправили, будет работать в RHEL 6, я вижу, что RH несколько быстро удержали от использования использование inittab для выполнения TTYs.
Материал в/etc/init от Выскочки (я думал, что Вы будете знакомы с тем прибытием из Ubuntu), замена для sysV инициализации (т.е. что раньше было в/etc/init.d и/etc/rc.d/rcX.d директорах). И в случае файлов Вы указываете, настраивает аппаратные средства последовательного порта.
Когда все остальное перестало работать прочитайте руководство:
/etc/inittab файл удерживается от использования и теперь используется только для установки значения по умолчанию runlevel... Для конфигурирования работы getty последовательной консоли не по умолчанию необходимо теперь записать Новомодное задание вместо того, чтобы редактировать/etc/inittab. Например...
Я предполагаю, что имеет смысл запускать getty's на современной машине ниже в стеке, чем inittab. Однако в целях обеспечения резервного удаленного доступа администратора, я думаю, что было бы намного более разумно запустить консоль на последовательном порте. т.е. посмотрите материал о/etc/init/start-ttys.conf
Некоторые процессы сохраняют файлы открытыми для записи. Они могли быть, например, программами, которые пишут журналы, как rsyslogd
, сетевые инструменты, как dhclient
или что-то еще. Завершение работы их один за другим и попытка перемонтирования могли бы работать.
Можно найти процессы, которые используют определенные файлы при помощи программы fuser
. Например, fuser -v -m /
возвратит список процессов. Однако я не уверен, является ли это один из них, который заставляет файловую систему напряженно трудиться.
Можно только повторно смонтировать файловую систему, только для чтения, если нет никакого процесса, который имеет файл, открытый для записи. Выполненный lsof /
видеть, какие процессы имеют файлы, открытые в корневой файловой системе. Файлы, открытые для записи, будут обозначены в FD
столбец. Можно отфильтровать их с
lsof / | awk '$4 ~ /[0-9].*w/'
Для фильтрации идентификаторов процесса автоматически проанализируйте вывод lsof -F pa
:
lsof -F pa /home | awk '/^p/ {pid = substr($0, 2)} /^a.*w/ {print pid}'
u
) и это все еще говорит занятый.
– Hubro
15.03.2017, 13:29
Я предполагаю, что Вы пытаетесь работать mount
команда в VM. Так или иначе у Вас, вероятно, есть другой корневой раздел, чем автор сообщения форума.
Попытка:
mount -o ro,remount /
Который не зависит от фс или монтирует опцию. Если это не работает, можно также попытаться определить корневую фс с grep " / " /proc/mounts
или cat /proc/cmdline
. Если Ваша корневая файловая система, например,/dev/mapper/system-rootfs, можно использовать:
mount -o ro,remount /dev/mapper/system-rootfs /
Если вы используете systemd, то запись на диск останавливается путем остановки systemd-journald.
# systemctl stop systemd-journald.socket
# systemctl stop systemd-journald.service
# mount -o ro,remount /
Иногда существует так много процессов, которые загружают монтирование, что может быть проще просто перезагрузиться с монтированием только для чтения.
Измените запись для корневой файловой системы в / etc / fstab
, например:
/dev/sda1 / ext2 relatime,rw,errors=remount-ro 0 1
станет:
/dev/sda1 / ext2 noatime,ro 0 1
При перезагрузке файловая система будет смонтирована только для чтения, поэтому вы можете запустить zerofree
на нем.
Когда вы закончите, снова смонтируйте файловую систему для чтения / записи ( mount -o remount, rw /
) и отмените изменения в / etc / fstab
.
На основе https://wiki.debian.org/ReadonlyRoot#Enable_readonly_root
Для всех, кто просто ищет быстрое исправление для вставки в свой терминал ...
(Прежде чем выполнять приведенные ниже команды, убедитесь, что у вас есть выполнил другие шаги, такие как telinit 1
.)
fuser -mv /dev/sda1 > /tmp/sda1.pids
kill `cat /tmp/sda1.pids`
Команды могут убить ваш сеанс, но после того, как вы вернетесь, ваш раздел готов к перемонтированию.
Улучшение ответа Питера:
Я не мог убить процессы, которые используют мою точку монтирования. Итак, я сделал следующее:
/ и т. Д. / fstab
для запуска в режиме только для чтения при следующей загрузке. Пример: / dev / sda1 / ext2 ro 0 1
Чтобы «восстановить» вашу систему:
$ mount -o remount, rw / dev / sda1
/ etc / fstab
, восстановив исходное значение Дополнительно: при необходимости откройте режим восстановления на любом этапе:
У меня была проблема, из-за которой я не мог перевести свою машину в режим только для чтения. Решение проблемы заняло у меня больше времени, чем я хотел бы признать... Думаю, моя проблема заключалась в том, что я оставил Apache -Zeppelin включенным и забыл об этом. Убедитесь, что вы не делаете то же самое с другим типом хостинга. Чтобы решить проблему, я использовал fuser -kill /
, чтобы завершить все процессы, которые могли вызвать проблему, и это позволило мне вернуться в режим ro.
Если вы по-прежнему не можете размонтировать или перемонтировать устройство после остановки всех служб и процессов с открытыми файлами, возможно, ваше устройство занято файлом подкачки или разделом подкачки. Это не будет отображаться с fuser
или lsof
. Отключите подкачку с помощью:
sudo swapoff -a
Вы можете заранее проверить и показать сводку любых разделов подкачки или файлов подкачки с помощью:
swapon -s
или:
cat /proc/swaps
В качестве альтернативы использованию команды sudo swapoff -a
вы также можете отключить своп, остановив службу или модуль systemd . Например:
sudo systemctl stop dphys-swapfile
или:
sudo systemctl stop var-swap.swap
В моем случае отключение подкачки было необходимо, помимо остановки любых служб и процессов с открытыми на запись файлами,чтобы я мог перемонтировать свой корневой раздел как только для чтения, чтобы запустить fsck
на моем корневом разделе без перезагрузки. Это было необходимо на Raspberry Pi с Raspbian Jessie.
Допустим, вы хотите сжать диск VDI VM1(Виртуальная машина 1 ). Тогда вам понадобится второйVM2 . То есть:
Из диспетчера VirtualBox:
выберите файл vdi для ВМ1, который вы хотите сжать. Подсказка :Убедитесь, что жесткий диск, только что добавленный в ВМ2, идет вторым в порядке загрузки -после исходного диска ВМ2.
mount -l
, чтобы увидеть, какой из них _Device_
в команде sudo mount -o remount,ro _Device_
. В моем случае это было /dev/sdb1 . Таким образом, команда была (1 )sudo mount -o ro,remount /dev/sdb1
, а затем (2)sudo zerofree /dev/sdb1
. Вместо VM2 нужно иметь возможность загружаться с установочного диска, например .iso-образа и добиваться того же, НО я не пробовал.
Решение для меня состояло в том, чтобы перезагрузить ОС и выбрать «режим восстановления» в меню загрузки GRUB. Из «режима восстановления» запущено меньше процессов, а перемонтирование read -работает нормально.
Если в системе есть файл подкачки в корневой файловой системе (, а не в разделе подкачки ), также необходимо временно отключить файл подкачки с помощью swapoff -a
.