Вопрос или проблема
Я хочу изменить запись в /etc/group
– а именно, добавить пользователя в группу. Но что-то – я не знаю, что или кто – создало файл /etc/group.lock
. fuser /etc/group.lock
ничего не показывает, но это не говорит мне много.
Как я могу определить, кто виноват? И могу ли я безопасно удалить файл блокировки и снова изменить /etc/group
?
Примечание: я использую SLES 15 на машине x86_64.
Попробуйте
lslocks
это покажет файлы, заблокированные с помощью flock вручную или приложениями.
Попробуйте использовать lsof, чтобы узнать, какой пользователь заблокировал файл.
lsof /etc/.group.swp
Это должно показать что-то подобное.
~]# lsof /etc/.group.swp
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vim 27611 root 4u REG 253,1 12288 6299017 /etc/.group.swp
или, возможно,
vim /etc/group
vim покажет (если файл заблокирован), что он заблокирован, кем и был ли файл изменен и т.д.
Вывод vim на заблокированном файле
E325: ATTENTION
Найдена временная файл с именем "/etc/.group.swp"
принадлежит: root дата: Пн Фев 24 14:49:08 2020
имя файла: /etc/group
изменен: нет
имя пользователя: root имя хоста: testfoonameserver101
идентификатор процесса: 27611 (все еще работает)
При открытии файла "/etc/group"
дата: Пт Фев 21 09:23:49 2020
Возможно, вам повезло! Некоторое время назад была ошибка, связанная с файлами .lock, которые не разблокировались после выполнения команды useradd, хотя я помню, что это было в REHL 9 или что-то подобное.
Если вы прочитаете файлы, они могут содержать PID, соответствующий последнему известному действию с файлом. Кроме того, вы можете добавить пользователя, и это завершится успешно, несмотря на то, что в STDout будет выведено противоположное сообщение. Вы используете ОС 2017/2018 года, поэтому я могу лишь надеяться, что в ней нет аналогичной ошибки, которую я описал.
Когда я применил эти команды, это не решило проблему. В итоге я принял решение перезагрузить сервер Linux как последнее средство. В конечном итоге это действие позволило мне успешно обновить файл группы.
Ответ или решение
Если вы столкнулись с проблемой блокировки файла /etc/group
с помощью файла /etc/group.lock
, и не можете выяснить, кто его заблокировал, вот пошаговая инструкция по устранению этой проблемы:
-
Проверка блокировок с помощью lslocks:
Выполните командуlslocks
для отображения заблокированных файлов с использованиемflock
. Это поможет вам определить, какие файлы заблокированы и какие процессы их блокируют.lslocks
-
Использование lsof:
Вы можете воспользоваться командойlsof
, чтобы увидеть, какие процессы могут блокировать файл/etc/group
. Если в системе имеется swap-файл (например,/etc/.group.swp
), также проверьте его.lsof /etc/group.lock lsof /etc/.group.swp
Вы получите вывод, показывающий процессы и пользователей, которые открыты для этих файлов.
-
Проверка состояния файла в редакторе vim:
Попробуйте открыть файл/etc/group
или возможный swap-файл в редактореvim
. Если файл заблокирован, на экране появится сообщение о том, кто его заблокировал, и информация о времени блокировки.vim /etc/group
Пример вывода, если файл заблокирован:
E325: ATTENTION Found a swap file by the name "/etc/.group.swp" owned by: root dated: Mon Feb 24 14:49:08 2020 file name: /etc/group modified: no user name: root host name: example process ID: 27611 (still running)
-
Проверка процесса:
Если командаlsof
илиvim
показывает, что файл действительно заблокирован, постарайтесь выяснить, какой процесс и пользователь его блокируют. Вы можете использоватьps
для просмотра процессов, указанных в выводе.ps -p <PID>
-
Безопасное удаление lock-файла:
Если вы уверены, что процесс, который блокирует файл, больше не нужен (например, он завис), можно удалить файл блокировки. Однако делайте это с осторожностью, чтобы не повредить открытые сессии или данные.rm /etc/group.lock
-
Последний вариант – перезагрузка системы:
Если никакие из вышеуказанных методов не помогли, возможно, вам придется перезагрузить сервер. Это освободит все процессы и избавит вас от блокировки. Но помните, что это крайний шаг.reboot
-
Проверка и внесение изменений в файл:
После того как будет устранена блокировка, вы сможете внести необходимые изменения в файл/etc/group
. Убедитесь, что вы используетеsudo
или выполняете действия от имени пользователя с соответствующими правами.
Если проблема повторяется, рекомендуется проверить журналы системных ошибок и обновлений, чтобы исключить возможность существования багов в версии вашей операционной системы.