如何通过 SSHFS 访问 /proc/ 文件(procfs)

如何通过 SSHFS 访问 /proc/ 文件(procfs)

使用装有 Ubuntu 16.04 的计算机(请不要提供更新建议),我/proc/通过 SSHFS 安装在我的 Raspberry Pi 3B +(linux 内核版本 4.19.88)上:

sshfs [email protected]:/proc ~/procAtPi
ls -la ~/procAtPi

这里向ls我展示了 Pi 中的所有文件/proc,没有任何问题,就像我直接通过 ssh 连接一样。但是当我尝试使用 读取文件时cat,这里没有显示任何内容。文件内容仅在我直接通过连接时输出给我

user@remote:~$ ssh [email protected]
[email protected]:~$ cat /proc/stat

如何从通过 SSHFS 访问的 procfs 中读取文件?

我还做了一些观察:

  • 使用sudo cat ~/procAtPi/stat导致Access denied(所以root似乎比普通用户拥有更少的访问权限?)但文件所有者是root:

    user@remote:~$ ls -lai ~/procAtPi/stat
          16 -r--r--r--   1 root             root                0 Dez 24 00:00 stat
    
  • 显示的所有者因访问权限而异:

    user@remote:~$ ls -lai ~/procAtPi/
         ...
         171 dr-xr-xr-x   1 user             user                0 Jan 20 09:18 11045
         ...
    [email protected]:~$ ls -lai /proc/
         ...
    2035700 dr-xr-xr-x   8 pi               pi                  0 Jan 20 09:18 11045
         ...
    
  • 远程访问 Pi 的 sysfs ( /sys/) 中的文件似乎工作正常。

当前的解决方法是在 Pi 上运行服务器,/proc/stat通过 TCP 读取数据并使其可用。然而,要做到这一点,我每次都必须手动启动服务器(我不想要自动启动,因为我并不总是需要它)。我需要访问proc/stat一个htop类似的程序,该程序应该监视我的 Pi 集群。

答案1

ls显示了 Pi 中的所有文件/proc,没有任何问题,就像我直接通过ssh.但是当我尝试使用 读取文件时cat,这里没有显示任何内容。

作为解决方法,请使用-o direct_io以下选项sshfs

# sshfs localhost:/proc /mnt/tmp
root@localhost's password:
# cat /mnt/tmp/self/stat
<nothing!>
# umount /mnt/tmp

# sshfs -o direct_io localhost:/proc /mnt/tmp
root@localhost's password:
# cat /mnt/tmp/self/stat
8242 (sftp-server) R 8236 8242 8242 0 -1 4194560 335 0 0 0 0 0 0 0 20 0 1 0 1846105 2506752 441 18446744073709551615 94732486082560 94732486157085 140730261312560 0 0 0 0 0 0 0 0 0 17 3 0 0 0 0 0 94732486190800 94732486194248 94732486483968 140730261319328 140730261319357 140730261319357 140730261319643 0

这里有关该选项正在执行的操作的描述。

下面这些文件的问题/proc是它们显示为大小 = 0 的常规文件,但它们不是空的并且在读取时包含数据。

请注意,此问题不是由 SFTP 协议引起的,也不是特定于sshfs.

相关内容