হিস্টপেন্ড ব্যবহার করার সময় ইতিহাসের ক্ষতি


18

আমি অনেক ইতিহাস রাখতে চাই, তাই আমার histappendমধ্যে সেট করেছি .bashrc। বেশিরভাগ সময় সবকিছু ঠিকঠাক কাজ করে, ইতিহাসের সাথে অনেকগুলি শাঁস যুক্ত হয়। যাইহোক, প্রতিবার এবং একবারে, আমি একটি নতুন শেল শুরু করব এবং আমি দেখতে পাব যে আমি পুরো ইতিহাসটি হারিয়ে ফেলেছি - এবং এটিতে প্রস্থান করার জন্য সর্বশেষ শেল থেকে কিছু কমান্ড থাকে (যেমন এটি সংযোজন পরিবর্তে কেবল ওভাররাইটিং নয়) )। এ কারণে, আমি সন্দেহজনক যে .bash_historyফাইলটি মেরে ফেলার কোনও প্রক্রিয়া না করে শেল প্রস্থান করার সময় এটি ঘটছে । এই উপসংহারটিকে সমর্থন করে, আমার প্রম্পটে ইতিহাস কমান্ড নম্বর রয়েছে এবং আমি এগুলি কখনই নিচে নেমে দেখিনি।

কেউ কি কখনও একই ধরণের সমস্যার মধ্যে পড়ে? অথবা এমনকি কীভাবে সমস্যাটি সন্ধান করতে হবে তার পরামর্শ রয়েছে?


উত্তর:


13

আমার নিজের প্রশ্নের উত্তর দেওয়ার জন্য দুঃখিত, তবে অন্য উত্তরগুলির মধ্যে কোনওটিই সত্যিই সমস্যার সমাধান করছে না।

আমি অবশেষে বুঝতে পেরেছি যে এটি কেবল তখনই ঘটে যখন gnome-terminalনিজেকে বন্ধ করা হয় (অর্থাত্ ফাইল> প্রস্থান, 'x' বোতাম, Alt + F4), এবং তারপরে সাধারণত তখনই যখন একাধিক টার্মিনাল দ্রুত উত্তেজনায় বন্ধ করা হয়। শেলটি বন্ধ করতে ctrl-D ব্যবহার করার সময় টার্মিনালটি অনুসরণ করে তা কখনই ঘটে না।

যদি আমি এটি যথেষ্টভাবে পিন করতে পারি তবে আমি একটি জিনোম-টার্মিনাল বাগ রিপোর্ট ফাইল করব। ইতিমধ্যে, সম্ভবত এটি গুগল থেকে এখানে আসা আরও কিছু লোককে সহায়তা করবে!


10

কেন এমনটি হয় তা জানেন না, তবে প্রতিবার প্রম্পট প্রদর্শিত হলে আপনি তার ইতিহাস ফাইলটিতে বাশকে লিখতে বাধ্য করে সমস্যাটি সমাধান করতে পারেন:

PROMPT_COMMAND="history -a; history -n"

এটি (-a) লিখবে এবং তারপরে হ্যাশ ফাইলটি পুনরায় পড়বে (-n) পরবর্তী বারের নির্দেশ পরবর্তী নির্দেশের জন্য অনুরোধ করবে। অতিরিক্ত সুবিধা: আপনি শেল 2 এর ইতিহাসে শেল 1-তে কমান্ড এক্স পাবেন।


জিএনইউ বাশ, সংস্করণ 3.00.15 (1) -রিলিজে (i686-redhat-linux-gnu) কাজ করে না
ডেভিড ম্যাকিনটোস

2
"কাজ করে না" এর অর্থ কী আপনি ব্যাখ্যা করতে পারেন?
ইন্নাম

3
আপনি যে অতিরিক্ত সুবিধাটি উদ্ধৃত করেছেন তা অনেক ক্ষেত্রেই একটি খারাপ দিক রয়েছে। এটি আমি যে আচরণটি খুঁজছি তা নয়, কারণ আমি পৃথক শেলগুলিতে দুটি সম্পূর্ণ পৃথক কাজ সম্পাদন করতে পারি এবং তাদের ইতিহাসকে মিশ্রিত করতে চাই না। এটি সম্ভবত কিছু সাহায্য করবে না। ইতিহাস যখন অদৃশ্য হয়ে যায় তখন এটি .Bash_history এর সামগ্রী মুছে ফেলা হয় - আমি শেল প্রস্থান করতে বা PROMPT_COMMAND দ্বারা লিখিত থাকুক না কেন তা আমি আশা করি না।
ক্যাসকেবেল

5
history -nঅদৃশ্য এটি করা আরও নির্ভরযোগ্য history -a; history -c; history -r। এটি ব্যাখ্যা করার জন্য, আমি প্রথমে নোট করব history -aযা সঠিক জিনিসটি করে - আপনার .bash_historyটাইপ করা আপনার সমস্ত কমান্ড থাকবে যাতে আপনি সেগুলি যেভাবে টাইপ করেছেন - ধরে নিবেন যে আপনি history -aপ্রতিটি আদেশের পরে চলেছেন। চ্যালেঞ্জটি হ'ল ইতিহাসের শেলটির ধারণা .bash_history ফাইলের সাথে সুসংগত রাখা। এটি এর সাথে সহজ -cএবং -rসমস্যাটি হ'ল এটি বড় হলে এটি ধীর হতে পারে। -nভাঙ্গতে পারে কারণ এটি কোন লাইনগুলি নতুন তা ভুলভাবে চিহ্নিত করে। (আমি এখানে স্থানের বাইরে চলেছি!)
অ্যারন ম্যাকডেইড

4
(... যদি আপনি ব্যবহার করেন -n) কল্পনা করুন যে আপনি শেল 1: এ একটি কমান্ড কার্যকর করেছেন ls। তারপরে আর একটি শেল শেল টু আপনি নির্বাহ করবেন cd। এখন, .bash_history এ থাকা ইতিহাসটি সঠিক কারণ এটি history -aআপনার PROMPT_COMMAND- এতে থাকবে ls \n cd \n। এরপরে, আপনি শেল ওনে ফিরে যান এবং টাইপ করুন pwd। শেল ওয়ান মনে করে যে ইতিহাস ( ls) এর কেবল কমান্ড ছিল । এখন এটি ইতিহাসে দুটি কমান্ড ( lsএবং pwd) রয়েছে বলে মনে করে। আপনি যখন -nএটি মনে করেন (আমার ইতিহাসে আমার দুটি কমান্ড রয়েছে এবং .Bash_history এ দুটি কমান্ড রয়েছে, সুতরাং আমি আপ টু ডেট আছি।)
অ্যারন ম্যাকডেইড

3

আমার অভিজ্ঞতাটি ছিল যে শেলগুলি প্রস্থানের সময় হিস্ট্রি ফাইল আপডেট করে। সুতরাং একটি শেলের প্রাথমিক "ইতিহাস" ইতিহাসের সর্বাধিক বের হওয়া শেলের দৃশ্যের উপর নির্ভরশীল।

এর ফলাফল হ'ল অন্যান্য শেল কীভাবে শুরু হয়েছিল এবং বন্ধ হয়েছিল তার উপর নির্ভর করে আপনি ইতিহাস থেকে কমান্ডগুলি আসতে এবং আসতে পারেন going


2
আমি হিস্ট্রি ফাইলটি কীভাবে লিখিত হয় তা আমি খুব ভাল করে বুঝতে পারি - এই কারণেই আমি আমার প্রশ্নে নির্দিষ্ট করেছিলাম যা আমি ব্যবহার করছি histappend। সমস্যাটি অপ্রত্যাশিত সামগ্রী নয়, তবে পূর্ববর্তী সঞ্চিত সামগ্রীর মোট ক্ষতি।
ক্যাসকেবেল

এটি ব্যাখ্যা করে যে আমি কেন আমার ইতিহাস হারাচ্ছি ...
বি সেভেন

1

আমি এর আগে ঘটতে দেখেছি কিন্তু ডিস্ক ত্রুটিগুলির সাথে এটি একটি সমস্যা ছিল যা ক্রমবর্ধমান ফ্রিকোয়েন্সিতে ঘটেছিল। আমি ড্রাইভে স্ক্যান চালাতাম। যদি ড্রাইভটি ঠিকঠাক হয়ে যায় তবে আমি পরীক্ষা করে দেখতে পারি যে এই ফাইলটি একটি স্বেচ্ছাসেবী শেল ইতিহাসের সীমা ছাড়িয়ে যাচ্ছে না।

এমন কিছু হতে পারে যা হতে পারে তা হতে পারে ফাইলটি ৮০ লাইনে ছাঁটাই করা বা আপনার ইতিহাসের মতো হওয়া অনেকগুলি আদেশের নির্দেশ রাখা।


এটি চলছে এমন মেশিনে আমার রুট অ্যাক্সেস নেই, তবে আমি মোটামুটিভাবে নিশ্চিত যে ড্রাইভটি ঠিক আছে। আমার হোম ডিরেক্টরিটি আমাদের ল্যাবটিতে একটি সার্ভারে সঞ্চয় করা হয় (প্রচুর পরিমাণে রেড, আমি বিশ্বাস করি) এবং এনএফএস-মাউন্ট করা। "নির্বিচারে শেল ইতিহাসের সীমা" বলতে কী বোঝ? এটি সমস্ত হিস্টিজ এবং হিস্টফিলিজের নীচে ভালভাবে ঘটছে, এবং যদিও আমি উভয়ই বড় করে রেখেছি, তবে তারা বাশ স্টোরগুলির নীচে রয়েছে int
ক্যাস্যাবল

আমার বলতে হবে যে ডেভিড ম্যাকিনটোশের প্রবেশ সম্ভবত সম্ভবত যা ঘটছে।
এএক্সএক্সমাস্টার

1
আমি পুরোপুরি নিশ্চিত যে এটি না। আমি উচিত না আমার ইতিহাসে মাত্র দুটি কমান্ড দিয়ে শেষ যখন প্রস্থান গত শেল দুয়েক ডজন কমান্ড ছিল, ইতিহাস ফাইল কয়েক শত, এবং HISTSIZE / HISTFILESIZE 10000. সেট করা হয় ছিল
Cascabel
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.