जवाबों:
एक ही समय में कई बैश इंस्टेंसेस को बंद करते समय, एक ज्ञात दौड़ की स्थिति होती है जिससे इतिहास साफ़ हो सकता है। यह तब होता है क्योंकि बैश इतिहास फ़ाइल लिखे जाने पर लॉकिंग का उपयोग नहीं किया जाता है।
चेत रमी (वर्तमान बैश मेंटेनर) ने इस मुद्दे की स्थितियों का अच्छा सारांश दिया :
वर्तमान (bash-4.3-devel) कोड कुछ इस तरह से काम करता है, कोई त्रुटि नहीं मानती है (lib / readline / histfile.c: history_do_write ()):
- नाम बदलें (हिस्टफ़ाइल, हिस्टफ़ाइल ~)
- O_CREAT | O_TRUNC के साथ खुली फ़ाइल
- सभी इतिहास डेटा को रखने के लिए मॉलोक बफर काफी बड़ा है
- एक (2) कॉल में सभी इतिहास प्रविष्टियों को लिखें
- फ़ाइल बंद करें
- अनलिंक (हिस्टीफाइल ~)
बैश-4.2 कोड उसी तरह काम करता है, सिवाय इसके कि यह इतिहास की फाइल का बैकअप नहीं लेता है। प्रत्येक शेल एक ही काम करता है जब वह बाहर निकलता है, यह मानते हुए कि आपके कॉन्फ़िगरेशन में हिस्टैपेंड सेट नहीं है।
ऐसे कुछ तरीके हैं जिनसे इतिहास की फ़ाइल शून्य-लंबाई तक समाप्त हो सकती है: मॉलॉक विफल हो सकता है, या लेखन विफल हो सकता है। बैश-4.2 में, उस बिंदु पर छंटनी की गई इतिहास फ़ाइल के बारे में कुछ भी करने के लिए बहुत देर हो चुकी है। Bash-4.3 में, पिछली इतिहास फ़ाइल को पुनर्स्थापित किया जाएगा।
बग-बैश के इस मेलिंग लिस्ट थ्रेड में समस्याओं, संभावित समाधानों और इसके आस-पास की चिंताओं की एक सभ्य चर्चा है।
कुछ अन्य संभावनाएँ भी हैं:
HISTSIZE
या HISTFILESIZE
0 पर सेट किया गया थाhistory-size
0 पर सेट की गई थी> "$HISTFILE"
या इसी तरह)बाद के मामले में, आप यह जांचना चाह सकते हैं कि कोई व्यक्ति आपके खाते तक नहीं पहुंच रहा है और अपने ट्रैक को अनूठे तरीके से छिपाने की कोशिश कर रहा है। पर एक नजर डालें last
, /var/log/auth
(या /var/log/secure
CentOS / RHEL पर), और आप इसे किया है, किसी भी प्रक्रिया लेखांकन और / या ऑडिटिंग सॉफ़्टवेयर आपके द्वारा इंस्टॉल किया।
कैसे मैंने गलती से अपना बैश इतिहास मिटा दिया:
मैं पहले सिद्धांतों से अपनी वैकल्पिक टर्मिनल रीडलाइन स्क्रिप्ट को रोल कर रहा था: https://tiswww.cwru.edu/php/chet/readline/rluserman.html
और फिर एक टर्मिनल में इसका परीक्षण किया। उस GNU रीडलाइन में एक इतिहास आकार और इतिहास संरक्षण निर्देश हैं, जो कि हिस्ट साइज़ को डिफॉल्ट किया जा सकता है, और इस तरह आपका सारा इतिहास उड़ जाता है।
स्मृति में छोड़ दिया तो इतिहास की वसूली:
यदि आप इसे रिबूट से पहले पकड़ लेते हैं, या यदि एक टर्मिनल स्पष्ट से पहले खुला छोड़ दिया गया था, तो आप अपने इतिहास को स्मृति में ढूंढने में सक्षम हो सकते हैं। भागो history | cut -c 8- > histback_user1.txt
सभी टर्मिनलों पर खुला और प्रत्येक उपयोगकर्ता के लिए छोड़ दिया है। यदि वह आपके विस्तारित इतिहास के साथ एक फ़ाइल का उत्पादन करता है, तो आप के ~/.bash_history
साथ बदल सकते हैं histback_user1.txt
। हाल ही में सिस्टम में लॉग किए गए सभी उपयोगकर्ताओं के इतिहास के साथ-साथ रूट के इतिहास को भी देखें। कई परिस्थितियों में बैश इतिहास को गलती से साफ़ करना आसान है, इसलिए यदि आप इतिहास को कोई नुकसान नहीं पहुंचाना चाहते हैं, तो आपको दैनिक बैकअप स्क्रिप्ट की आवश्यकता है।
>.bash_history
। हो सकता है कि कोई आपके खाते में था और उसने अपने पगडंडियों को छिपाने की कोशिश की। असामान्य लॉग इन समय की जाँच करेंlast
, खोज के माध्यम से/var/log/auth.log
(आपके सिस्टम पर निर्भर करता है)।