systemd와 bluetooth 프로세스 모두 삭제된 rfkill 파일을 사용합니다. 아마도 전체 디스크 뒤에 있을 것입니다.

systemd와 bluetooth 프로세스 모두 삭제된 rfkill 파일을 사용합니다. 아마도 전체 디스크 뒤에 있을 것입니다.

내 ASUS Tinkerboard(Debian 10)의 systemd 및 bluetooth 프로세스 모두 삭제된 rfkill파일을 악용하고 있었습니다. .df -h

rfkill유효한 파일을 복구하거나 삭제된 파일을 사용하는 프로세스를 중지하려면 어떻게 해야 합니까 ?

rfkill다음 오류(디스크가 꽉 찼음, 사용 중인 파일이 제거됨)가 발생하여 제거하고 다시 설치할 수 없습니다.

dpkg: unrecoverable fatal error, aborting:
 unable to fill /var/lib/dpkg/updates/tmp.i with padding: No space left on device

프로세스를 중지하는 대안은 블루투스에서는 쉽지만 systemd는 핵심 프로세스(pid 번호는 1)이므로 어떻게 해야 할지 상상할 수 없습니다.

lsof +L1
COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NLINK NODE NAME
systemd   1 root   89u   CHR 10,242      0t0     0 1171 /dev/rfkill (deleted)

디스크는 16GB이고 가득 찬 것으로 표시되지만 df -h3.5GB du -kx / | sort -rn | less만 표시됩니다. 처음 50줄은 다음과 같습니다.

3455876 /
2498820 /usr
1174128 /usr/lib
1054352 /usr/share
806276  /usr/lib/aarch64-linux-gnu
556544  /var
247288  /var/cache
238792  /var/cache/apt
225056  /usr/share/locale
198740  /home
198736  /home/linaro
190568  /usr/share/doc
187660  /usr/lib/aarch64-linux-gnu/dri
183944  /usr/bin
179352  /var/lib
177304  /var/cache/apt/archives
148316  /home/linaro/.cache
147356  /home/linaro/.cache/chromium
147352  /home/linaro/.cache/chromium/Default
146584  /home/linaro/.cache/chromium/Default/Code Cache
146564  /home/linaro/.cache/chromium/Default/Code Cache/js
122204  /var/lib/apt
122132  /var/lib/apt/lists
112628  /usr/share/fonts
104228  /var/log
102284  /lib
84692   /usr/share/fonts/truetype
77888   /usr/share/icons
74312   /usr/share/emacs
74264   /usr/share/emacs/26.1
73184   /usr/lib/python2.7
72984   /usr/lib/gcc
72980   /usr/lib/gcc/aarch64-linux-gnu
72976   /usr/lib/gcc/aarch64-linux-gnu/8
65860   /usr/lib/python3
65856   /usr/lib/python3/dist-packages
59900   /usr/share/emacs/26.1/lisp
56344   /lib/modules
56340   /lib/modules/4.19.193
56240   /lib/modules/4.19.193/kernel
56236   /lib/modules/4.19.193/kernel/drivers
54708   /lib/modules/4.19.193/kernel/drivers/net
54704   /lib/modules/4.19.193/kernel/drivers/net/wireless
52280   /usr/lib/python2.7/config-aarch64-linux-gnu
50100   /home/linaro/.config
49876   /home/linaro/.config/chromium
48744   /usr/include
48280   /usr/share/scratch
44276   /var/lib/dpkg
41632   /usr/share/icons/Adwaita
41396   /var/lib/dpkg/info
41316   /home/linaro/.config/chromium/Default
40312   /usr/lib/python3/dist-packages/scipy
39964   /lib/modules/4.19.193/kernel/drivers/net/wireless/rockchip_wlan
39952   /usr/lib/python3.7
37324   /usr/share/fonts/truetype/arphic
35040   /home/linaro/.config/chromium/Default/Service Worker

답변1

/dev/rfkill일반 파일이 아닌 문자 장치여야 합니다. 따라서 먼저 일반 파일로 (잘못) 교체되지 않는 한 실제로 디스크가 가득 차게 되지는 않습니다. lsof +L1또한 결과에 따르면 올바른 장치 노드가 사용되고 있음이 표시됩니다 . systemdTYPE /dev/rfkillCHRDEVICE는 10,242실제 완전한 노드와 같습니다 /dev/rfkill.

ls -l /dev/rfkill
crw-rw-r-- 1 root netdev 10, 242 Jun 14 20:59 /dev/rfkill

첫 번째 문자 는 c이 파일이 일반 파일이 아니라문자 장치 노드,게다가주요 및 보조 장치 번호파일 크기 대신 (각각 10 및 242) - 장치 노드는 기본적으로 디렉토리 항목이므로 의미 있는 크기가 없습니다. 이 숫자는 이 장치 노드가 어떤 커널 장치 드라이버와 통신해야 하는지 커널에 알려줍니다.

이것Linux 커널 문서의 장치 노드 번호 목록이는 /dev/rfkill기본 장치 10과 보조 장치 242가 있는 문자 장치 노드여야 함을 알려줍니다.

삭제된 것을 다시 생성할 수 있습니다./dev/rfkill 장치 노드매우 간단합니다. 루트로 두 가지 명령을 사용하십시오.

mknod -m 664 /dev/rfkill c 10 242
chgrp netdev /dev/rfkill

(RAM의 모든 내용은 /dev실제 디스크에 있지 않습니다. 부팅할 때마다 다시 생성됩니다.)

반면에 만약/usr/sbin/rfkill 주문하다제거되었으며 dpkg다시 설치해야 합니다. 그러나 디스크가 100% 가득 찬 경우 이 작업을 수행하기 전에 먼저 여유 디스크 공간을 확보해야 합니다.

lsof +L1삭제되었으나 아직 사용 중인 다른 파일(유형 REG= 일반 파일) 을 지적 하셨나요 ?

데비안 저장소에서 콘텐츠를 쉽게 다시 다운로드할 수 있다면 실행을 통해 apt-get clean여유 공간을 빠르게 확보할 수 있습니다. 설치된 소프트웨어에 영향을 주지 않고 다운로드한 패키지의 로컬 캐시가 지워집니다.

답변2

Tinkerboard 2S의 루트를 내장 eMMC 대신 Micro SD로 옮기고 미러링 시스템을 설정한 후 eMMC 자체가 아닌 마운트된 드라이브에 있어야 할 파일이 거의 12GB에 달하는 것을 발견했습니다.

어느 시점에서 마운트가 실패한 것으로 보이며 다운로드 소프트웨어는 이를 인식하지 못했기 때문에 파일을 원격으로 마운트하는 대신 로컬 저장소에 저장했습니다.

eMMC에 로컬로 저장된 파일만 남기고 마운트를 Micro SD 카드로 옮겼기 때문에 이런 현상이 나타났습니다.

교훈: 외장 드라이브를 장착하지 않고 모든 것을 확인했어야 했습니다.

미래를 위해 나는 대답을 따랐습니다여기마운트에 실패한 디렉터리에 쓰기 방지

관련 정보