Кто-то блокирует /etc/group на очень долгое время – что делать?

Вопрос или проблема

Я хочу изменить запись в /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 года, поэтому я могу лишь надеяться, что в ней нет аналогичной ошибки, которую я описал.

Ресурс: https://access.redhat.com/errata/RHBA-2004:472

Когда я применил эти команды, это не решило проблему. В итоге я принял решение перезагрузить сервер Linux как последнее средство. В конечном итоге это действие позволило мне успешно обновить файл группы.

Ответ или решение

Если вы столкнулись с проблемой блокировки файла /etc/group с помощью файла /etc/group.lock, и не можете выяснить, кто его заблокировал, вот пошаговая инструкция по устранению этой проблемы:

  1. Проверка блокировок с помощью lslocks:
    Выполните команду lslocks для отображения заблокированных файлов с использованием flock. Это поможет вам определить, какие файлы заблокированы и какие процессы их блокируют.

    lslocks
  2. Использование lsof:
    Вы можете воспользоваться командой lsof, чтобы увидеть, какие процессы могут блокировать файл /etc/group. Если в системе имеется swap-файл (например, /etc/.group.swp), также проверьте его.

    lsof /etc/group.lock
    lsof /etc/.group.swp

    Вы получите вывод, показывающий процессы и пользователей, которые открыты для этих файлов.

  3. Проверка состояния файла в редакторе 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)
  4. Проверка процесса:
    Если команда lsof или vim показывает, что файл действительно заблокирован, постарайтесь выяснить, какой процесс и пользователь его блокируют. Вы можете использовать ps для просмотра процессов, указанных в выводе.

    ps -p <PID>
  5. Безопасное удаление lock-файла:
    Если вы уверены, что процесс, который блокирует файл, больше не нужен (например, он завис), можно удалить файл блокировки. Однако делайте это с осторожностью, чтобы не повредить открытые сессии или данные.

    rm /etc/group.lock
  6. Последний вариант – перезагрузка системы:
    Если никакие из вышеуказанных методов не помогли, возможно, вам придется перезагрузить сервер. Это освободит все процессы и избавит вас от блокировки. Но помните, что это крайний шаг.

    reboot
  7. Проверка и внесение изменений в файл:
    После того как будет устранена блокировка, вы сможете внести необходимые изменения в файл /etc/group. Убедитесь, что вы используете sudo или выполняете действия от имени пользователя с соответствующими правами.

Если проблема повторяется, рекомендуется проверить журналы системных ошибок и обновлений, чтобы исключить возможность существования багов в версии вашей операционной системы.

Оцените материал
Добавить комментарий

Капча загружается...