Yeniden okunmasını engelleyen / salt okunur olan dosyaları nasıl listeleyebilirim?
A) fuser
bulunabilir psmisc
paketi; Bu, fuser
parıltı bulduğum ve daha kullanışlı bir kullanım durumudur lsof
.
# fuser -v -m / 2>&1 | grep '[Ff]r.e'
Bu, okuma (f) ve yazma (F) için / için dosyaları açık olan tüm işlemleri gösterecektir. Yeniden okunmasını önleyen / salt okunur olan dosyalar (F) yazmak için açılan dosyalardır.
Yazmaya açık kök dizin dosyaları ile çalıştırılan yürütülebilir bir işlemi öldür .
# for fupid in $(fuser -v -m / 2>&1 | grep Fr.e | awk '{print $2}'); do kill $fupid; done
systemd
Bir uyarı ile yorumların üstünde . Eğer systemd
bir init
sonra fuser
onu görmek ve diğer hususlar vardır olacaktır. İle systemd
onlar sadece tespit edilip ile öldürülmüş bile çalışan, bu (yeniden), arkanda süreçleri başlatabilir fuser
. systemd
geleneksel olandan çok daha gelişmiş sysvinit
.
B) Açıklamadaki GÜNCELLEME sistemin sadece ... init
ve getty
hala çalıştığını ... belirtir .
Sistemin kullanmadığını systemd
, kullandığını söyleyen yorumu görüyorum init
. Streç, systemd
öyle init
. Yorum açıkça söylemedi sysvinit
varsayılan streç kullanıyor olabilir, söz konusu sistemin farz ediyorum, böylece systemd
için init
. Ya da bu yazıya systemd
rastlayan, streç kullanan diğer insanlar bu kısmı faydalı buluyorlar.
Başına Debian Wiki ,
Sistem başlatma işlemi init arka plan programı tarafından gerçekleştirilir. Sıkıştırılmış ve önceki sürümlerde, bu daemon sysvinit paketi tarafından sağlanır ve hiçbir alternatif desteklenmez. Gelen hışıltılı varsayılan init cin hala,sysvinit
ama systemd bir "teknoloji önizlemesi" mevcuttur. Gelen jessie ve streç , varsayılan init sistemidirsystemd
, ama sysvinit için anahtarlama desteklenir.
Jessie beri, sadece systemd tamamen desteklenir; sysvinit çoğunlukla desteklenir, ancak Debian paketlerinin sysvinit başlangıç komut dosyaları sağlaması gerekmez. runit de paketlenmiştir, ancak diğerleriyle aynı düzeyde test ve destek almamıştır ve şu anda PID 1 olarak desteklenmemektedir.
İle systemd
çalışan, bu sorun olmadan yeniden monte edilebilmesi için / boşaltmak için alınması gereken birkaç ek adımlar vardır.
Muhtemelen veya (ikisi de soket bağımlılığı olan) system.slice
için açık dosyalar tutuyor . Veya çalışıyorsa , / var / ... (& / var / her zaman kendi cihazı değildir), vb. Kiralamaları yeniden yazabilir , vb. Bulabilir ve öldürebilir, ancak hemen yedeklemeye başlayabilir. systemd-journald.service
systemd-udevd.service
NetworkManager
dhclient
fuser
dhclient
NetworkManager
Ahlaki bir çok şey otomatik olabilir 'isteyebilir' / (ve hatta daha fazla systemd
).
Emin olmak için, mümkünse systemd
, çalışma seviyesi 1'in eşdeğeri ile eşleştirilir rescue.target
(ve runlevel1.target
simgesel bir bağlantıdır rescue.target
).
1) Sistemi izole ederek rescue.target
# systemctl isolate rescue.target
Sizden kök parolayı girmeniz istenmelidir; ekrandaki talimatları izleyin.
2) Kurtarma kabuğunda ne istediğini öğrenin.
# systemctl show -p Wants /
Genellikle system.slice
; İsteyen herşeyi durdur. Örneğin
# systemctl stop system.slice
3) Bu noktada, yeniden bağlama gerekir değil rapor mount: / is busy
ve mount -o remount,ro /
gerektiği çalışır. Değilse, ile tekrar kontrol edin fuser
.
4) FWIW; Ayrıca umount
başka bir bağlantının alt dizinine başka bir aygıt bağlandığında / yani iç içe bağlanmalarda başarısız olduğunda da gördüm . Örneğin, / var / veya / boot / başka bir aygıtta (ve umount /
takılıysa) başarısız olur . Yine de bu durumda çalışması gerekir.mount -o remount,ro /
lsblk
yuvalanmış bağları görselleştirmek için yardımcı olabilir.
Neden lsof + L1 artık bağlantısı kaldırılmış olan açık dosyaları listelemiyor?
Kullanılabilir olmadıkları için (soketler veya çoğu FIFO ve boru) artık dosya açmıyorlar (üst süreç dosya tanımlayıcıyı kapattı) veya (hala) 1'den büyük bir bağlantı sayısı var.
erkek lsof (8) detayları ...
+ | -L [l]
Bu seçenek, kullanılabilir olduklarında dosya bağlantı sayılarının listelenmesini etkinleştirir ('+') veya devre dışı bırakır ('-') - örneğin, soketler veya çoğu FIFO ve boru için kullanılamaz.
Aşağıdaki numara olmadan + L belirtildiğinde, tüm bağlantı sayıları listelenir. -L belirtildiğinde (varsayılan), hiçbir bağlantı sayısı listelenmez.
+ L'yi bir sayı izlediğinde, yalnızca bağlantı sayısı o sayıdan az olan dosyalar listelenir . (Hiçbir sayı -L'yi izleyemez.) '' + L1 '' formunun bir belirtimi, bağlantısı kaldırılmış olan açık dosyaları seçer. Formun bir belirtimi +aL1 <file_system>
, belirtilen dosya sistemindeki bağlantısız açık dosyaları seçer.
w
veyau
içindeFD
sütunlsof
çıkış veya içinF
çıktısındafuser -vm /
örneğin. Yine de, size kapsamlı bir liste veremem. Ayrıca needrestart paketini de kurmak isteyebilirsiniz .