为什么 tmux 使用我的驱动器?

为什么 tmux 使用我的驱动器?

我正在尝试卸载硬盘并打开多个 tmux 会话。

$ sudo umount /mnt/PIHDD
umount: /mnt/PIHDD: target is busy
        (In some cases useful info about processes that
         use the device is found by lsof(8) or fuser(1).)


$ lsof /mnt/PIHDD/
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
tmux    1415   pi   36r   DIR    8,1    20480    5 /mnt/PIHDD

$ ps 1415
  PID TTY      STAT   TIME COMMAND
 1415 ?        Ss    17:26 tmux

我如何知道要查看哪个 tmux 会话,或者其他原因是什么?我假设某个会话包含一个窗口,其中当前目录位于该驱动器上。

我手动查看了所有会话中的所有窗格,但找不到罪犯。

https://superuser.com/a/212913/291007看起来很有帮助,但根本cat /proc/1415/environ 不包含。^TMUX=但它确实包含^@_=/usr/bin/tmux^@.
这个答案确实生成了预期的输出,但不包含 PID 1415。

根据lsof -p 1415,该进程当前已打开我在 tmux 中打开的每个目录 - 而不仅仅是一个会话的目录。这意味着带有 PID 的线程1415实际上是 tmux 本身。值得注意的是,它只lsof列出了挂载点 dir /mnt/PIHDD,而不列出其中的任何文件。

有趣的是,它ls /proc/1415/fd以与其他驱动器不同的颜色显示相关的安装点:
在此输入图像描述

也许也相关:安装的驱动器/mnt/PIHDD是 NTFS 格式的。驱动器/mnt/oceanPortal为 EXT-4。

为什么 tmux 使用我的硬盘以及如何安全地停止它?

可能有帮助的其他信息:

$ gdb -p 1415
(gdb) info proc
process 1415
cmdline = 'tmux'
cwd = '/home/pi'
exe = '/usr/bin/tmux'

自从我最初问这个问题以来,我重新启动了正在运行的 raspi,以查看重新启动 tmux 是否会重新获取该文件描述符。现在tmux,具有新 PID 的进程不再具有/mnt/PIHDDin /proc/{pid}/fd
这意味着我无法验证任何给出的解释。另一方面,如果有人遇到同样的问题并且能够重新启动 tmux,请尝试一下!

它可能是关闭文件描述符本来可以毫无问题地工作。但我仍然希望得到有知识的确认,并且解释为什么 tmux 有那个 fd


不相关的信息可能会对未来的我的人有所帮助:

  • 不要尝试将 gdb 连接到 tmux从 tmux 内部。如果这样做,请打开一个新的终端/ssh 连接并获取kill -9从 .gdb 获取的 pid ps -ax | grep gdb

相关内容