बैश द्वारा सूचीबद्ध फाइलें लेकिन अस्वीकार्य


0

Ubuntu 12.04 सिस्टम पर निम्नलिखित व्यवहार का क्या कारण होगा?

  1. मैंने "ubuntu" उपयोगकर्ता के रूप में एक मशीन में SSHed किया है।
  2. रनिंग ls -lah /data/*दर्जनों गैर-रिक्त फ़ाइलों (जैसे file1.txt, file2.txt, आदि) से पता चलता है, सभी "ubuntu" उपयोगकर्ता / समूह के स्वामित्व में हैं, और पूर्ण पढ़ने / लिखने के उपयोग के साथ।
  3. अगर मैं कोशिश करता हूं cat /data/file1.txt, तो मुझे "कैट: /data/file1.txt: bash त्रुटि देता है। ऐसी कोई फ़ाइल या निर्देशिका नहीं"

संक्षेप में, lsफ़ाइलों को सूचीबद्ध कर रहा है, लेकिन हर दूसरे तरीके से, फ़ाइलें अनिवार्य रूप से मौजूद नहीं हैं। मैं उन्हें बिल्ली नहीं बना सकता या उन्हें किसी भी तरह से पढ़ नहीं सकता। यहां तक ​​कि सभी फाइलों को 777 की अनुमति देने से कुछ भी नहीं बदलता है। यह वास्तव में विचित्र है। यहाँ क्या चल रहा है?


का आउटपुट क्या है ls -lad /data/file1.txt? है /data/file1.txtएक प्रतीकात्मक कड़ी?
डारथ एंड्रॉइड

/dataफ़ोल्डर ( ls -lad /data) पर क्या अनुमतियाँ सेट हैं ? शायद यह xमालिक के लिए नहीं है , इसलिए आप फ़ाइलों को सूचीबद्ध कर सकते हैं, लेकिन उन्हें एक्सेस नहीं कर सकते।
NuTTyX

@ नोट: यदि यह समस्या थी, तो फ़ाइल आकार, स्वामित्व और अनुमतियाँ देखना संभव नहीं होगा ls -l…
जी-मैन

अपनी बुद्धि का अपमान करने के जोखिम पर - क्या आप सुनिश्चित हैं कि आप फाइलों को देख रहे हैं /data? क्योंकि ls /data/*( -dविकल्प के बिना ) किसी भी निर्देशिका की सामग्री को सूचीबद्ध करेगा /data। यदि आप सब करना चाहते हैं /data, की सामग्री को सूचीबद्ध करना है , तो यह कहना काफी अच्छा है ls -lh /data(या जो भी विकल्प आप चाहते हैं; और निश्चित रूप से, -aऔर -Aउन चीजों को शामिल करेंगे जिनके नाम से शुरू होता है .)। ………… इसके अलावा, कृपया ls -lb /dataफ़ाइल नाम में गैर-प्रदर्शित करने योग्य बाइनरी वर्णों की जांच करने का प्रयास करें।
जी-मैन

क्या का परिणाम है file /data/file1.txt याcd /date file file1.txt
broomdodger

जवाबों:


2

फ़ाइल नाम में उनके पास बाइनरी वर्ण हो सकते हैं।

इसके cat /data/file1.txtबजाय, नाम के भाग से मेल खाने की कोशिश करें, और शेल को इसके बाकी हिस्सों का पता लगाने दें:

cat /data/*1.txt

नहीं, मैंने पहले ही इसके लिए जाँच कर ली थी। यहां तक ​​कि निर्देशिका में ऑटो-पूर्ण करने की कोशिश करने से कुछ भी वापस नहीं होता है, क्योंकि कोई भी फाइल नहीं पढ़ी जा सकती है।
सेरिन

ऑटो-कम्पलीट केवल कुछ फाइलों को "देखेगा"। इसे egrep . /data/*
आज़माइए

0

फ़ाइलें हटा दी गई हो सकती हैं, लेकिन अभी भी एक एप्लिकेशन में खुली हैं। फ़ाइलें डिस्क पर मौजूद नहीं हैं, लेकिन क्योंकि अनुप्रयोग अभी भी उन्हें "खुला" है, कर्नेल उन्हें अभी तक फ़ाइल सिस्टम से नहीं निकाल सकता है।

फाइलों के साथ प्रक्रिया का पता लगाएं

sudo lsof | grep data/file1.txt

और फिर उस एप्लिकेशन को फिर से शुरू / हत्या करने का प्रयास करें यदि यह महत्वपूर्ण नहीं है, या सिस्टम को रिबूट करने का प्रयास करें।


1
कोई "एप्लिकेशन" उपयोग नहीं किया जा रहा है। वे rsync -avz /data ubuntu@remotehost:/dataमेरे लोकलहोस्ट से रन लेकर बनाए गए थे । और बैश अभी भी उन्हें एक फाइलों के साथ सूचीबद्ध करता है, कुछ सैकड़ों एमबी में।
सेरिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.