私の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
プロセスを停止する代替手段はBluetoothでは簡単ですが、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)
ディスクは 16 GB でいっぱいにマークされていますが、df -h
3.5 GBdu -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
また、結果は正しいデバイスノードが使用されていることを示しています。systemd
TYPE/dev/rfkill
とCHR
DEVICEは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
デバイスノードとても簡単です。ルートとして 2 つのコマンドを使用します。
mknod -m 664 /dev/rfkill c 10 242
chgrp netdev /dev/rfkill
(RAMの内容はすべて/dev
物理ディスクにはありません。起動するたびに再作成されます。)
一方、/usr/sbin/rfkill
注文する削除され、dpkg
再インストールする必要があります。ただし、ディスクが100%いっぱいになっている場合は、これを行う前にまず空きディスク容量を確保する必要があります。
lsof +L1
削除されましたが、まだ使用中の他のファイル(タイプREG
=一般ファイル)を指摘しましたか?
Debian リポジトリからコンテンツを簡単に再ダウンロードできる場合は、実行によりapt-get clean
空き容量をすばやく解放できます。インストールされているソフトウェアに影響を与えずにダウンロードしたパッケージのローカルキャッシュが消去されます。
答え2
Tinkerboard 2Sのルートを内蔵eMMCの代わりにMicro SDに移動し、ミラーリングシステムを設定した後、eMMC自体ではなくマウントされたドライブに必要なファイルがほぼ12GBに達することがわかりました。
ある時点でマウントが失敗したように見え、ダウンロードソフトウェアはそれを認識しなかったため、ファイルをリモートでマウントするのではなくローカルストアに保存しました。
eMMCにローカルに保存されたファイルだけを残し、マウントをMicro SDカードに移動したため、この現象が発生しました。
教訓:外付けドライブを装着せずにすべてを確認しなければなりませんでした。
未来のために私は答えに従いましたここマウントに失敗したディレクトリへの書き込み保護