使用装有 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
.