Yeniden okunmasını engelleyen / salt okunur olan dosyaları nasıl listeleyebilirim?
A) fuserbulunabilir psmiscpaketi; Bu, fuserparı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
systemdBir uyarı ile yorumların üstünde . Eğer systemdbir initsonra fuseronu görmek ve diğer hususlar vardır olacaktır. İle systemdonlar sadece tespit edilip ile öldürülmüş bile çalışan, bu (yeniden), arkanda süreçleri başlatabilir fuser. systemdgeleneksel olandan çok daha gelişmiş sysvinit.
B) Açıklamadaki GÜNCELLEME sistemin sadece ... initve gettyhala ç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 sysvinitvarsayılan streç kullanıyor olabilir, söz konusu sistemin farz ediyorum, böylece systemdiçin init. Ya da bu yazıya systemdrastlayan, 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.sliceiç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.servicesystemd-udevd.serviceNetworkManagerdhclientfuserdhclientNetworkManager
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.targetsimgesel 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 busyve mount -o remount,ro / gerektiği çalışır. Değilse, ile tekrar kontrol edin fuser.
4) FWIW; Ayrıca umountbaş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.
wveyauiçindeFDsü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 .