如何在不终止进程的情况下释放对 Linux 中文件的锁定

How can I release a lock on a file in Linux without killing the process

Oracle VirtualBox 正在保存其中一个磁盘文件。我想释放对文件的锁定,而不必终止进程或删除文件。可能吗?

这是 lsof 的输出:

COMMAND  PID USER   FD   TYPE DEVICE     SIZE/OFF     NODE NAME
VBoxSVC 2935 vbox   23r   REG   8,35 253360058368 12976130 /home/vbox/VirtualBoxVMs/virtm0/virtm0-disk1.vdi

FD = 23r 表示文件描述符 23 并且已打开以供读取。

gdb 工具可用于释放对该文件的锁定

    gdb -p $PID
    p close($FD)

    eg:

    gdb -p 1737
    .....
    (gdb) p close(6)
     = 0
    ...
    Quit anyway? (y or n) y
    Detaching from program: /usr/lib/apache2/mpm-prefork/apache2, process 1737

希望对您有所帮助。