Ubuntu 16.04(업데이트 제안을 제공하지 마십시오)가 설치된 시스템을 사용하여 /proc/
Raspberry Pi 3B+(Linux 커널 버전 4.19.88)에 SSHFS를 통해 설치했습니다.
sshfs [email protected]:/proc ~/procAtPi
ls -la ~/procAtPi
SSH를 통해 직접 연결한 것처럼 ls
Pi의 모든 파일이 문제 없이 표시됩니다 . /proc
하지만 를 사용하여 파일을 읽으려고 하면 cat
여기에 아무것도 표시되지 않습니다. 파일 내용은 다음을 통해 직접 연결할 때만 나에게 출력됩니다.
user@remote:~$ ssh [email protected]
[email protected]:~$ cat /proc/stat
SSHFS를 통해 액세스된 procfs에서 파일을 읽는 방법은 무엇입니까?
나는 또한 몇 가지 관찰을 했습니다.
sudo cat ~/procAtPi/stat
결과를 사용 하면Access denied
(그래서 루트는 일반 사용자보다 액세스 권한이 적은 것 같습니까?) 파일 소유자는 루트입니다.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/
에 있는 파일에 대한 원격 액세스가 제대로 작동하는 것 같습니다.
/proc/stat
현재 솔루션은 데이터를 읽고 TCP를 통해 사용할 수 있도록 하는 Pi에서 서버를 실행하는 것입니다 . 그러나 이렇게 하려면 매번 수동으로 서버를 시작해야 합니다(항상 필요한 것은 아니기 때문에 자동 시작을 원하지 않습니다). 내 Pi 클러스터를 모니터링하는 유사한 프로그램 proc/stat
에 액세스해야 합니다 .htop
답변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
.