हाल ही में भेद्यता प्रकटीकरण के बाद सिस्टम द्वारा हल की गई सेवा के लिए खोज करना, मुझे कमांड को खोजने से एक बहुत ही अजीब व्यवहार देखने में आया।
root@localhost:/# find . -name "*systemd-resolved*"
./usr/share/man/man8/systemd-resolved.service.8.gz
./usr/share/man/man8/systemd-resolved.8.gz
कमांड पहले रन के लिए आउटपुट के रूप में 0 या दो लाइन देता है। लेकिन अगर मुझे दूसरी बार कमांड मिलती है तो:
root@localhost:/# find . -name "*systemd-resolved*"
./usr/share/man/man8/systemd-resolved.service.8.gz
./usr/share/man/man8/systemd-resolved.8.gz
./lib/systemd/systemd-resolved
./lib/systemd/system/systemd-resolved.service.d
./lib/systemd/system/systemd-resolved.service
इसका मतलब यह है कि पहली बार, "ढूंढें" वास्तव में सब कुछ नहीं ढूंढता है। इसके अलावा यह केवल एक बार होता है। अगली बार कमांड चलाना सही आउटपुट दिखाता है। मैंने इसे डेबियन 8 (जेसी) स्थापित करने के साथ कुछ अन्य प्रणालियों पर जांचा। कर्नेल 4.9+ वालों पर यह सटीक समस्या हमेशा होती है लेकिन कर्नेल 3.16 वाले सिस्टम पर ऐसा नहीं होता है।
सिस्टम रिबूट के बाद यह सब फिर से होता है। लेकिन व्यवहार प्रत्येक व्यक्तिगत प्रणाली के लिए समान है। इसका मतलब है कि अगर किसी विशिष्ट सिस्टम पर परीक्षण (गलत तरीके से) पहले रन के लिए आउटपुट की दो लाइनें और दूसरे रन के लिए सही आउटपुट है, तो सिस्टम को फिर से रन करने के बाद कमांड का पहला रन 2 लाइनों को प्रिंट करता है। इसलिए सिस्टम प्रत्येक रिबूट (मेरे परीक्षणों के अनुसार) के बाद समान व्यवहार दिखाता है। फ़ाइलें विवरण इस प्रकार हैं:
-rw-r--r-- 1 root root ./usr/share/man/man8/systemd-resolved.service.8.gz
lrwxrwxrwx 1 root root ./usr/share/man/man8/systemd-resolved.8.gz -> systemd-resolved.service.8.gz
-rwxr-xr-x 1 root root ./lib/systemd/systemd-resolved
drwxr-xr-x 2 root root ./lib/systemd/system/systemd-resolved.service.d
-rw-r--r-- 1 root root ./lib/systemd/system/systemd-resolved.service
EDIT: उन सभी के लिए जो इस विशिष्ट मामले के लिए इस विशिष्ट मामले से संबंधित समस्या का सुझाव देते हैं: " सिस्टम-सॉल्व्ड " केवल उदाहरण के लिए है। ऐसा तब होता है जब दूसरे कीवर्ड को भी खोजते हैं। यह एक और उदाहरण है जो पहले रन के लिए गलत परिणाम देता है:
root@localhost:/# find . -name "*apache*"
यहां कोई भी बैकबोन रिपॉजिटरी के नवीनतम कर्नेल के साथ डेबियन 8 पर इस समस्या की जांच करने में सक्षम नहीं है?
/lib/systemd
घुड़सवार है? यह किस तरह का फाइल सिस्टम है? यदि यह एक अलग माउंट बिंदु है, तो यह किस समय घुड़सवार था?
strace
? किस ओएस पर आपने दोषपूर्ण व्यवहार का निरीक्षण किया? "रिटर्न 0 या उपरोक्त जैसे दो परिणाम" से आपका क्या अभिप्राय है? शून्य या आउटपुट की दो लाइनें, या बाहर निकलने का कोड 0 + दो लाइनें? क्या यह एक नया खोल शुरू करने या रिबूट करने के बाद फिर से होता है? यह प्रासंगिक हो सकता है कि पहला कॉल केवल फाइल लौटाए, जबकि दूसरा रिटर्न फाइल और डायरेक्टरी।