Эта команда работает нормально, но изменяет каждую запись в XML-файле. (все поля с именем)
Что вводить, если есть другие поля с одно и то же имя. Я пробовал:
xml ed -L -N w=http://artifactory.jfrog.org/xsd/1.7.9 -u "//w:mailServer/port" -v "123" artifactory.config.import.xml
, но ничего не происходит. Однако команда принята.
Когда я использую
xml ed -L -N w=http://artifactory.jfrog.org/xsd/1.7.9 -u "//w:port" -v "999" artifactory.config.import.xml
, каждый элемент с именем port изменяется на значение 999.
Не видя вашей системы, очень сложно точно сказать, в чем проблема. Комментарии и предыдущие ответы — хорошее начало.
Тем не менее, я бы вернулся к вики debian, где описаны предварительные требования для монтирования/только для чтения.
Ссылка на документацию здесь:https://wiki.debian.org/ReadonlyRoot
Большой я проведу тебя здесь:
1 -в / есть определенные места, которые должны быть прочитаны и записаны.Судя по документации, это выглядит примерно так:
ваши блочные устройства, вероятно, будут отличаться, в зависимости от конфигурации вашего стека хранилища (разделов, lvm без разделов и т. д. )но основная идея заключается в том, что вам нужны эти 4 точки монтирования, чтобы их последующая смонтированная файловая система имеют вариант монтажа RW.
2 -в /etc есть ряд специальных файлов, для которых необходимо либо создать символическую ссылку, либо внести некоторые другие изменения (, подробно описанные в статье по ссылке. ). Они могут применяться или не применяться в зависимости от того, какие приложения работают на вашем Linux-сервере. некоторые файлы могут даже не существовать на вашем компьютере, но я включил все в документы. Имейте в виду, я настоятельно рекомендую внести эти изменения, ДАЖЕ ЕСЛИ вы убили pid процесса. Вот пути прямо из вики Debian:
После того, как вы проверили все вышеперечисленное и подтвердили, что они соответствуют спецификации в вики, следующее, что нужно проверить, это /etc/apt/apt.conf
DPkg {
// Auto re-mounting of a readonly /
Pre-Invoke { "mount -o remount,rw /"; };
Post-Invoke { "test ${NO_APT_REMOUNT:-no} = yes || mount -o remount,ro / || true"; };
};
на основании вашей ошибки,последнее, что вы можете проверить на основе документации, приведено ниже:
«После обновления пакетов вы можете столкнуться с проблемой, что mount отказывается перемонтировать файловую систему только для чтения, сообщая вам «/ занят». Это вызвано удаленными файлами, которые все еще используются процессом.Чтобы узнать, какие процессы используют удаленные файлы, используйте инструмент checkrestart (1 )из пакета debian -или используйте следующую команду.Часто это демоны, использующие обновленные библиотеки. Вы должны перезапустить их, чтобы файлы были освобождены."
Командапредставлена в док.:
{lsof +L1; lsof|sed -n '/SYSV/d; /DEL\|(path /p;'} |grep -Ev '/(dev|home|tmp|var)'
Не зная точной конфигурации вашей файловой системы, разбивки на разделы и конфигурации устройства хранения, трудно дать вам еще что-то для подражания. Я бы начал с того, что вернулся и перепроверил ваши предварительные требования в документации (и изложил выше ).
У вас установлен /proc
?
Очевидно, поскольку вы заботитесь о том, чтобы большую часть времени /
монтировался только для чтения -, я могу предположить, что вы также можете не монтировать procfs. Но procfs нужен для того, чтобы lsof
находил открытые файлы.
Файлы, открытые процессами, открываются ядром через символические ссылки в procfs. Каталоги /proc/<pid>/fd
содержат символическую ссылку для каждого открытого файла. Имена символических ссылок — это номера файловых дескрипторов, а путь, на который ссылается символическая ссылка, — это путь к файлу.
Оборванные символические ссылки по-прежнему остаются в /proc
для открытых файлов, которые уже были удалены.И указанный путь к файлу переименовывается, чтобы заканчиваться «(удалено )».
То, что делает lsof +L1
по сути ничем не отличается от быстрого -лайнера типа:
stat -c%N /proc/[0-9]*/fd/* | grep deleted
Таким образом, вы можете использовать аналогичный -лайнер для перечисления всех открытых файлов, которые могут препятствовать повторному монтированию корневой файловой системы (при условии работы/proc
).
Однако, если вы смонтировали/смонтировали /proc
, единственными другими причинами, о которых я могу думать, являются ошибки... Во всяком случае, к вашему сведению, в моей текущей системе Debian Stretch. lsof +L1
работает как положено.
bash# lsb_release -d
Description: Debian GNU/Linux 9.5 (stretch)
bash# uname -a
Linux bwp-249-8 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u4 (2018-08-21) x86_64 GNU/Linux
bash# lsof -v
lsof version information:
revision: 4.89
[...]