Çalışan bir komut dosyası tarafından yazılmış bir dosyayı açmak güvenli midir?


20

Bir dosyaya yazılan bir kabuk betiği çalıştırıyorum.
Bu betiğin tamamlanması uzun zaman alabilir ve betiğin bitmesini beklemek yerine kısmi çıktıyı izlemek istiyorum.

Betik tarafından yazılmış bir dosyayı açmak (çift tıklamak) güvenli midir?


4
Yani. Ayrıca önceden biliniyorsa, komut dosyası çıktısını ancak tişörtle yazdırabilirsiniz.
Hennes

1
Yarı ile ilgili tee komandoudur
Cheiron

Yanıtlar:


42

Dosyayı okumak güvenlidir, ancak bahsettiğiniz çifte tıklamak muhtemelen dosyayı size değişiklik yapma ve kaydetme seçeneği sunan bir editörde açacaktır. Yanlış eşyalar olur, bu yüzden dosyayı değiştirmenize bile izin vermeyen komutlar öneririm.

Bunlar terminalde çalışan örneklerdir; sadece dosyayı okuyacaklar:

cat file
less file
less +F file
tail -n 5 file
tail -f file

4
Daha akıllı dosya düzenleyicileri sizi bu dosyanın değiştiği konusunda uyarır ve yeniden yüklemek isteyip istemediğinizi sorar, ancak aptal düzenleyiciler olmayabilir.
user1306322

5
@ user1306322 Hala güvenli olduğu garanti edilmiyor. Juts, dosya yazmaya açık olduğundan, sürekli olarak yazılmış olduğu anlamına gelmez. Editör çalışırken hiçbir şey yazılmadıysa farketmez. Ve bir editör yeni bir dosya yazıp üstüne yeniden adlandırabildiğinden (isimler atomik olduğundan), üzerine yazılmakta olan dosya silinir. Bu noktadan itibaren yazılan çıktılar silinen bir dosyaya gidecektir.
kasperd

13

Sen yazmıyorsan, sorun değil.

Ancak, kullanarak tavsiye ederim

tail -f log_file

başka bir terminalde.

Bu komut dosyayı "izleyecektir" log_fileve yeni eklenen içeriği komut dosyası tarafından güncellenir kaydedilmez yazacaktır.


1

Kamil Maciorowski'nin yanıtına yorum eklemek için yeterli bilgi yok:

Bazı dosyalar tail -F fileiçin, aşağıdakilerin bir rotasyon boyunca devam etmesi için isteyeceksiniz . Örneğin syslog izliyorum.


-1

Komut dosyası (veya altta yatan çerçeve uygulaması) çalışması sırasında dosya tanıtıcısını art arda açıp kapatıyorsa, aşağıdaki nedenlerden dolayı açık olan sonraki yazma modunda paylaşım ihlaliyle karşılaşabilir:
1) Komut yazmayı isteyebilir özel modda erişim (eşzamanlı okuma erişimi hariç), bu nedenle dosya düzenleyiciniz / görüntüleyici programınız henüz dosyayı okuyorsa, yazma komut dosyasında bir hata tetikleyebilir.
2) Ayrıca, bazı dosya editörleri / izleyicileri dosyayı açtıkları süre boyunca dosyayı kilitlerler.

Sonuç olarak, dosyayı görüntülemek için kullandığınız programa bağlı olarak olası sorunlar vardır. Ve dosyaya yazan betiğin uygulanmasından (veya alt çerçevesinden) kaynaklanan muhtemel problemler vardır.


1
Deneyimlerime göre bu Linux'ta çok nadir görülür (not: Ben ev kullanıcısıyım). Sorunun Windows’ta mevcut olduğunu biliyorum, ancak soru linux olarak etiketlendi . Hangi "editörler / izleyiciler" Linux'ta böyle çalışır? Hangi Linux lezzetlerinde kilitler zorunludur?
Kamil Maciorowski

@KamilMaciorowski Maalesef, özel bir uyarı listem yok. Kilitler hiçbir yerde zorunlu değildir (Windows altında da değil), bazı insanlar bunları kullanır. Sadece böyle bir sorunun mümkün olduğunu söylüyorum ve lütfen bu yaklaşımı görev kritik durumlarda dikkatsizce kullanmayın. Bunun uygulanıp uygulanmayacağına ya da önemli olup olmadığına karar vermek OP'ye bağlıdır. Yukarıdaki sorunun sadece varlığı, böyle bir olgunun OP için halihazırda meydana gelme ihtimalini arttırmaktadır. Hiçbir şeyin olamayacağını iddia eden cevaplar ya da yeni bilgi sağlamaz.
Roland Pihlakas

1
Bu cevabım yazarı bahse hazırım @RolandPihlakas etti deneyimli - ama sadece Windows üzerinde. Bu nedenle Linux üzerinden POSIX uyumlu sistemler üzerinden izleme çıktısı olan tail -fveya less +Frutin olanlarla ilgisi yoktur .
Chromatix

Gerçekten hakkında karıştı @Chromatix yapıcı Sen benim yorumunda noktaları cevap vermedi ... senin akıl parçası ve ne tür öneri veya yeni bilgi Windows için kişisel nefret yanı sıra burada sağlıyoruz arasında görmek için başarısız hiç . Neler yaşadığımı neden umursuyorsun? Lütfen kişisel olmayın.
Roland Pihlakas

@RolandPihlakas Çünkü cevabınız, salt okunur bir dosya açmanın Linux'ta, gerçekten olmadığı zaman tehlikeli olduğu konusunda çok kesin bir izlenim veriyor. Aslında, "dosyanın sonunda", "kaydın sonu" veya "satırın sonu" anlamına gelmediğini varsaymadığınız sürece, eklenmiş bir dosyayı okumak her zaman güvenlidir. Başarısız olacağı tek durum , yazma uygulamasının çok az sayıda uygulamanın yaptığı (zorunlu POSIX kilidi bir "danışma kilididir") ve zorunlu olarak iyi tanımlanmış bir hatanın ortaya çıkmasına neden olacak bir "zorunlu kilit" tutmasıdır. düzensiz davranıştan daha.
Chromatix
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.