প্রতিটি লগইনে BASH ইতিহাসটি 500 টি লাইনে ছাঁটা হয়েছে


22

কোনও কারণে, আমি আমার সিস্টেমটিকে পুনরায় বুট করার পরে আমার বেস ইতিহাস রাখতে পারি না। এখানে আমার সম্পর্কিত বিভাগগুলি রয়েছে ~/.bashrc:

shopt -s histappend
PROMPT_COMMAND='history -a; updateWindowTitle'
export HISTCONTROL=ignoredups
export HISTSIZE=9999
export HISTFILESIZE=999999
export HISTFILE="$HOME/.bash_history"

যতদূর আমি এগুলি বলতে পারি সমস্ত প্রয়োজনীয় বিকল্পগুলি (আমি জানি আমি অতীতে এই সমস্তগুলি ছাড়াই একাধিক রিবুটগুলিতে ইতিহাস রাখতে সক্ষম হয়েছি)। তবে, বেশ কয়েকটি পুনরায় বুট করার আগে এই বিকল্পগুলি যুক্ত করা সত্ত্বেও, আমি পুনরায় বুট করার পরেও আমার ইতিহাসের বেশিরভাগ অংশটি looseিলা করেছি। এটি খালি নয়, তবে এটি রিবুট করার আগে আমার 9999 টি লাইন নেই।

কেউ অভিযোগ করার আগে হ্যাঁ আমি এই প্রশ্নগুলি পড়েছি। আমি তাদের কিছু পরামর্শ উপরোক্ত তালিকা হিসাবে প্রয়োগ করেছি, বাকী হয় অসহায় বা প্রাসঙ্গিক নয়:

সেখানে অন্যান্য প্রাসঙ্গিক কমান্ড থাকতে পারে এমন অফ সুযোগে, আপনি আমার সম্পূর্ণ ~/.bashrc এখানে দেখতে পারেন ।

তো, আমি কী মিস করছি? আমার ইতিহাস সংরক্ষণ করা হয় না কেন? যদি কেউ মনে করেন যে অন্য ফাইলটি প্রাসঙ্গিক হতে পারে তবে আমাকে জানান এবং আমি এটি পোস্ট করব। আমি grep -i hist \.*আমার চালিয়ে যাচাই করেছিলাম $HOMEযা দেখায় যে কেবল .স্ট্রিংটি ছিল histবা কেবল প্রাসঙ্গিক ফাইল ।HIST.bashrc

আমি লিনাক্স মিন্ট ডেবিয়ান সংস্করণ, জিএনইউ ব্যাশ, সংস্করণ 4.2.36 (1) -রেলিজ (x86_64-pc-linux-gnu) চালাচ্ছি এবং আমার প্রিয় টার্মিনাল এমুলেটরটি (এটি প্রাসঙ্গিক ক্ষেত্রে) হয় terminator


হালনাগাদ:

মন্তব্যে @ এমপির পরামর্শ অনুসরণ করে, আমি ডিফল্টের বিপরীতে ~/.bashrcসেট করতে আমার পরিবর্তন করেছি এবং এটি ইন্টারেক্টিভ শেলগুলির জন্য সমস্যার সমাধান বলে মনে হচ্ছে । লগইন শেলগুলি এখনও একই আচরণ প্রদর্শন করে, ইতিহাসের লাইনে ছাঁটা হয়েছে । তবে, সম্পর্কিত ফাইলগুলিতে কোনও সম্পর্কিত ভেরিয়েবল সেট করা নেই:HISTFILE=~/bash_history~/.bash_history500HIST

$ for f in /etc/profile ~/.profile ~/.bash_profile ~/.bash_login; do \
   echo -ne "$f :"; echo `grep HIST $f`; \
done
/etc/profile :
/home/terdon/.profile :grep: /home/terdon/.profile: No such file or directory
/home/terdon/.bash_profile :grep: /home/terdon/.bash_profile: No such file or directory
/home/terdon/.bash_login :grep: /home/terdon/.bash_login: No such file or directory
$ grep -r HIST /etc/profile.d/  <-- returns nothing

সুতরাং, কেন সেটিং করা হয় HISTSIZEএবং HISTFILESIZEএর মধ্যে ~/.bashrcযথেষ্ট নয় যদি না আমি স্পষ্টভাবে সেট $HISTFILEডিফল্ট ব্যতীত অন্য কিছু ~/.bash_history?


আপনি কি .বাশ_তিহাসিক বা মূলের মালিক? এলএস
আদনান ভাট্টি

1
@ এমএসএসটিপি হ্যাঁ, এটি আমার নিজস্ব। পরামর্শের জন্য ধন্যবাদ তবে আমি দেখতে পাচ্ছি না এটি যেভাবেই কোনও অনুমতির ইস্যু হতে পারে, আমি এটিতে / লিখতে অ্যাক্সেস পড়েছি বা করি না। যেহেতু কিছু ইতিহাস সংরক্ষিত হয়েছে, তাই আমি স্পষ্টভাবে তা করি। যদি ব্যাশের কোনও সেটিংস থাকে যা এই ফাইলটির ব্যবহারকারীর মালিকানা না থাকে তখন সমস্যা তৈরি করে, এটি হয় অভিযোগ করবে বা পুরো ইতিহাসের কার্যকারিতাটি কাজ করবে না।
টার্ডন

আপনি যখন historyকমান্ড কার্যকর করেন, আপনি যে আউটপুটটি দেখেন তা cat .bash_historyলাইন সংখ্যাগুলি ব্যতীত আপনি যা দেখেন, চালাচ্ছেন তার সমান ? মানে historyকমান্ড কি টাইম স্ট্যাম্প বা অন্যান্য তথ্য তালিকাভুক্ত করে? আমি জিজ্ঞাসা করার কারণটি হ'ল, যদি আপনি এই রহস্যজনক জিনিসগুলি দেখে থাকেন তবে এর অর্থ হ'ল আরও একটি মডিউল / ফাংশন / প্রোগ্রাম রয়েছে যা শেল ইতিহাসের সাথে গোলমাল করছে এবং যা কিছু আছে তার একটি ভুল বা বগি সংস্করণ আপনার শোকের কারণ হতে পারে might ।
মেলবার্সন

@ মেল_বার্সলান হ্যাঁ এটি একই, লাইন সংখ্যাগুলির মধ্যে কেবল পার্থক্য।
টার্ডন

2
ঠিক আছে, কিছুটা অদ্ভুত পরামর্শ, তবে এটিও একটি বিরক্তিকর সমস্যা ;): ডিফল্ট নয়, অন্য ফাইলটি হিস্টফিল হিসাবে চেষ্টা করুন ~/.bash_history। অত্যন্ত নির্মিত ব্যাখ্যা: আমি ধরে নিলাম বাশটি আপনার ডিফল্ট শেল, সুতরাং সিস্টেম শুরু করার পরে একটি অ-ইন্টারেক্টিভ শেলটি আপনার এক্স সেশনের প্যারেন্ট (আমিও ধরে নিই যে আপনি এক্স ব্যবহার করেন), যা হিস্টপেন্ড বিকল্প সম্পর্কে কিছুই জানতে পারবেন না (যেমন। ইন্টারেক্টিভ শেল দ্বারা পঠন করুন), যতক্ষণ না এই প্যারেন্ট শেলটি চালিত হয় সবকিছু ঠিক আছে, তবে সমাপ্তির পরে (যেমন সিস্টেম থামিয়ে দেওয়া) এটি ওভাররাইড হয়ে যাবে ~/.bash_history(যা পূর্বনির্ধারিত) এবং আপনার ইতিহাসকে
মেসেজ করে

উত্তর:


17

সমস্যাটি আসলে লগইন এবং অ-লগইন শেলগুলির বিভিন্ন আচরণে উত্থিত হয়। আমি আমার মধ্যে পরিবর্তনশীল সেট করেছিলাম যা ইতিহাসকে নিয়ন্ত্রণ করে ~/.bahsrc। যখন কোনও লগইন শেল শুরু করে তখন এই ফাইলটি পড়া হয় না, এটি কেবল ইন্টারেক্টিভ, অ-লগইন শেলগুলি (এর থেকে man bash) দ্বারা পড়ে:

যখন বাশকে একটি ইন্টারেক্টিভ লগইন শেল বা বিকল্প হিসাবে একটি ইন্টারেক্টিভ শেল হিসাবে ডাকা হয় --login, এটি প্রথমে ফাইল থেকে কমান্ডগুলি পড়ে এবং কার্যকর করে /etc/profile, যদি সেই ফাইলটি বিদ্যমান থাকে। যে ফাইল পড়ার পর, এটা জন্য দেখায় ~ / .bash_profile, ~/.bash_loginএবং ~/.profile, যাতে, এবং পড়ে এবং প্রথম এক যে বিদ্যমান এবং পাঠযোগ্য থেকে, executes কমান্ড। --noprofileবিকল্প ব্যবহার করা যেতে পারে যখন শেল এই আচরণ বাধা হতে শুরু করেছে।

[। । । ]

লগইন শেল নয় এমন একটি ইন্টারেক্টিভ শেলটি যখন শুরু হয়, তখন ফাইলটি উপস্থিত থাকলে ash / .bashrc থেকে আদেশগুলি পড়ে এবং কার্যকর করে। এটি --norc বিকল্প ব্যবহার করে বাধা দেওয়া হতে পারে। --Rcfile ফাইল অপশনটি বাশকে from / .bashrc এর পরিবর্তে ফাইল থেকে আদেশগুলি পড়তে এবং সম্পাদন করতে বাধ্য করবে।

অতএব, প্রতিটি সময় আমি লগইন করেছি, বা কোনও টিটিতে ফেলেছি, বা এসএস ব্যবহার করেছি, .historyফাইলটি কেটে ফেলা হচ্ছে কারণ আমি এটিকেও সঠিক আকারে সেট না করেছিলাম ~/.profile। আমি অবশেষে এটি উপলব্ধি করেছিলাম এবং পরিবর্তে ~/.profile যেখানে পরিবর্তিত হয় সেখানে ভেরিয়েবলগুলি সেট করেছিলাম~/.bashrc

সুতরাং, আমার ~/.historyবিচ্ছিন্ন হওয়ার কারণটি হ'ল আমি কেবল ইন্টারেক্টিভ, নন-লগইন শেলগুলি দ্বারা পড়া একটি ফাইলের মধ্যে হিস্টরি ভেরিয়েবলগুলি সেট করেছিলাম এবং তাই প্রতিবার আমি যখন বিভিন্ন ধরণের শেল চালিয়েছিলাম তখন ভেরিয়েবলগুলি উপেক্ষা করা হবে এবং ফাইলটি কেটে যাবে সেই অনুযায়ী।


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

@ এমপি প্রকৃতপক্ষে, দুঃখিত, আমি ইন্টারেক্টিভ, নন-লগইন শেলগুলি বোঝাতে চাইছি। উত্তর সম্পাদিত।
টেরডন

1
@ ইটারডন, সাধারণ প্রতিমাটি হ'ল ইন্টারেক্টিভ শেল বিকল্পগুলি ~ / .প্রফিল বা ~ / .বাশ_প্রফাইলে যায় না। ইন্টারেক্টিভ শেল বিকল্পগুলি ~ / .bashrc এ দেওয়া হয়। দুটি স্থানে সেটিংস বজায় রাখা থেকে বাঁচতে নিচের কমান্ডগুলি একটি ~ / .Bash_profile এর শীর্ষে রাখা যেতে পারে: export BASH_ENV=~/.bashrc ; if [ -f ~/.bashrc ]; then . ~/.bashrc; fi... এবং b / .Bashrc এর শীর্ষে আপনি সত্যিকার অর্থে ইন্টারেক্টিভভাবে চলছেন তা নিশ্চিত করার জন্য একটি চেক রেখেছেন: [ -z "$PS1" ] && return... অবশ্যই এটি একটি মূর্খতা।
নোয়া স্পুরিয়ার

1
@ নোহসপুরিয়ারটি BASH_ENVপ্রাসঙ্গিক নয়, এটি কেবল অ-ইন্টারেক্টিভ শেলগুলিকেই প্রভাবিত করে। "মূর্খতা" হিসাবে, এটি এমন কিছু যা দেবিয়ান শুরু করেছিল এবং যার সাথে আমি ব্যক্তিগতভাবে একমত নই। xsetআমার .bashrc এ প্রায়শই আমার গ্রাফিকাল অপশন থাকে ( এবং এর মতো) এবং আমি যখন tty থেকে বা এর মাধ্যমে লগইন শেলগুলি চালনা করি তখন আমি সেগুলি সক্রিয় করতে চাই না ssh। আমি চাই আমার .profile এবং .bashrc আলাদা। অনেকগুলি (যদিও সমস্ত নয়) লগইন পরিচালকদের উত্স। প্রোফাইল আপনি যখন লগ ইন করেন তখন গ্লোবাল ভেরিয়েবলগুলি সেখানে সেট করা থাকে সেখানে সেগুলি কেবল একবার পড়তে হবে এবং প্রতিবার আপনি টার্মিনাল খোলার সময় নয়।
টেরডন

1
@ উইলসনএফ ফাইলগুলি ক্রমিকভাবে পড়া হয় এবং ব্যক্তিগত ফাইলগুলি ( ~/.profileবা ~/.bashrc) সর্বশেষে পড়ে are এর মধ্যে যে কোনও কিছু সেট করা বিশ্বব্যাপী সেটিংসের চেয়ে বেশি অগ্রাধিকার গ্রহণ করবে। আপনি বেশ ঠিক বলেছেন, আপনার সেই ভেরিয়েবলগুলি সেট করা উচিত নয় /etc/bash.bashrc। ব্যবহার করুন ~/.profile(অথবা ~/.bash_profile) পরিবর্তে।
টেরডন

11

আমার পরামর্শটি হ'ল HISTFILEডিফল্ট হিসাবে অন্য ফাইলটি ব্যবহার করা ~/.bash_history

যদিও আমার কোনও বিশ্লেষণাত্মক ব্যাখ্যা নেই, আমি কীভাবে আমাকে এই পরামর্শটির দিকে নিয়ে গিয়েছিলাম তা রূপরেখার চেষ্টা করব: আপনি যদি bashনিজের ডিফল্ট (লগইন) শেল হিসাবে ব্যবহার করেন এবং এটিও ব্যবহার করেন X(যা উভয়ই খুব সম্ভবত) আপনার bash(গ্রাফিকাল ) ঠিক পরে চলমান উদাহরণ রয়েছে ) প্রবেশ করুন:

systemd
 ...
  |-login
  |   `-bash      <<====
  |       `-slim
  |           |-X -nolisten tcp vt07 -auth /var/run/slim.auth
  |           |  `-{X}
  |           `-fluxbox
  |               `-xterm -bg black -fg white
  |                   `-bash
 ...

আমি মনে করি এই উদাহরণটি একটি লগইন শেল, সুতরাং এটি আপনার পড়েনি ~/.bashrcএবং তাই histappendবিকল্প সম্পর্কে কিছুই জানতে পারবে না :

ম্যান বাশ (1) : লগইন শেল নয় এমন একটি ইন্টারেক্টিভ শেল শুরু করা হলে, বাশ /etc/bash.bashrc এবং ~ / .bashrc থেকে কমান্ডগুলি পড়ে এবং কার্যকর করে, যদি এই ফাইলগুলি উপস্থিত থাকে। (...)

যতক্ষণ এই "প্যারেন্ট শেল" চলবে ততক্ষণ সবকিছু ঠিক আছে, তবে এটি সমাপ্ত হওয়ার পরে (যেমন সিস্টেম থামিয়ে দেওয়া) এটি ওভাররাইড হয়ে যাবে ~/.bash_history(কারণ এটি ডিফল্ট মান) এবং আপনার ইতিহাসকে মেসেজ করে দেয় বা সিস্টেমে ক্লিপগুলি (আবার ডিফল্ট) 500 এ শুরু হয় লাইন। (বা সম্ভবত উভয় ...)

এটি আমার উপরও আঘাত করে যে ইতিহাসের কনফিগারেশনটি অন্তর্ভুক্ত করার পক্ষে এটি যথেষ্ট নয়, কারণ এটি এমন ~/.bashrcঅস্বাভাবিক সেটআপ হওয়া উচিত নয়। এর জন্য আমার কোনও ব্যাখ্যা নেই।


আপনার সমস্যা সম্পর্কিত, "লগইন শেলগুলি এখনও একই আচরণ প্রদর্শন করে", আপনি ইতিহাসের কনফিগারেশনটিও এতে অন্তর্ভুক্ত করার চেষ্টা করতে পারেন ~/.bash_profile:

man bash (1) : যখন ব্যাশটি ইন্টারেক্টিভ লগইন শেল হিসাবে, বা - লোগিন বিকল্পের সাথে একটি অ-ইন্টারেক্টিভ শেল হিসাবে আহ্বান করা হয়, এটি প্রথমে ফাইল / ইত্যাদি / প্রোফাইল থেকে কমান্ডগুলি পড়ে এবং কার্যকর করে, যদি সেই ফাইলটি বিদ্যমান থাকে। ফাইলটি পড়ার পরে, এটি ~ / .bash_profile, (...) সন্ধান করে

দুর্ভাগ্যক্রমে আমি নিজের bashকনফিগারেশন থেকে বিশদ সহ আরও ন্যায়সঙ্গত ব্যাখ্যা পোস্ট করতে পারি না , কারণ আমি একজন zshলোক ...


2
আমার ~/.bash_profileসমস্যার সমাধানে ইতিহাসের বিকল্পগুলি সুস্পষ্টভাবে সেট করা। আমি এখন ~/.bash_historyআমার ইতিহাস ফাইল হিসাবে ব্যবহার করছি তবে ~/.bashrcআমার প্রশ্নটিতে প্রদর্শিত সমস্ত পংক্তিকে কেবল যুক্ত করেছি ~/.bash_profile। ইন্টারেক্টিভ শেলগুলি কে স্ক্রু দিচ্ছিল তা এখনও নিশ্চিত নয়, তবে মনে হচ্ছে এটি এখন কাজ করছে, ধন্যবাদ!
টেরডন

1
অগ্রহণযোগ্যতার জন্য দুঃখিত তবে আমি কী চলছে তা ব্যাখ্যা করে একটি উত্তর পোস্ট করতে ভুলে গেছি। কিছুক্ষণ আগে @ জিলেসের কিছু সহায়তায় আমি এটি আবিষ্কার করেছি এবং শেষ পর্যন্ত একটি উত্তর পোস্ট করার সুযোগ পেয়েছি। আমি আমার গ্রহণ করতে চেয়েছিলাম কারণ এটি আসলে (খুব ভাল) কাজের প্রস্তাব দেওয়ার পরিবর্তে সমস্যাটি ব্যাখ্যা করে এবং ভবিষ্যতের দর্শকদের সহায়তা করতে পারে।
টেরডন

2

যেহেতু আপনার সমস্ত সেটিংস ম্যান পৃষ্ঠা অনুসারে যথাযথভাবে রয়েছে এবং যেহেতু ইতিহাস ফাইলটি আকার (বাইট) দ্বারা সীমাবদ্ধ নয়, কেবলমাত্র সম্ভাব্য ব্যাখ্যাটি আমি ভাবতে পারি। এটি কীভাবে শেলটি মারা যায় তা করতে হবে।

অনলাইন রেফারেন্স অনুসারে, শেল SIGHUP পেলেই গ্রেফিউল প্রস্থান (ইতিহাস সংরক্ষণ করা) ঘটে। আপনার সিস্টেমটি পুনরায় বুট করার সময় কীভাবে সংকেত প্রচার করে তা আমি সত্যিই ব্যাখ্যা করতে পারি না তবে আমি সন্দেহ করি যে আপনার শেল সিগিল বা এসআইপিপিডাব্লুআর দিয়ে প্রস্থান করে।

এটি হতে পারে কারণ আপনার ডাব্লুএম অবিচ্ছিন্নভাবে চালিত হয় (অপেক্ষা করুন) এবং টার্মিনাল এমুলেটরটি ডাব্লুএম থেকে তৈরি হয়েছিল যেখানে ব্যাশ সাইনআপের বাইরে অন্য কোনও প্রস্থান-জোর সংকেত পায়। এটিও হতে পারে যে OS - X -> WM -> xterm এর মাধ্যমে শেলটিতে পরিচালিত হওয়ার আগে প্রাথমিক ক্রেফুল SIGHUP পরিচালিত হওয়ার আগে সমস্ত প্রক্রিয়ায় "ফাইনাল কিল" প্রেরণে তাত্ক্ষণিকভাবে কাজ করতে পারে, কারণ সম্ভবত এক্স বা ডাব্লুএম এর থেকে প্রস্থান করতে বেশি সময় নেয় ওএসের নীচে নামার জন্য প্রস্তুত হতে লাগে।

আমি এই স্টাফটি সহ গভীর জলে রয়েছি, তবে আমি মনে করি lines লাইনগুলি বরাবর কিছু অনড় আচরণের কারণ। আমি আগে এই সমস্যাটি নিয়ে এসেছি এবং সবচেয়ে শক্ত প্রতিকার হ'ল exitব্যাশ যেখানে আপনি ইতিহাস রাখতে চান।

আমি history -aআপনার প্রশ্নে লক্ষ্য করেছি , এবং কেন ইতিহাস সংরক্ষণের পক্ষে এটি পর্যাপ্ত হবে না তা আমি ভাবতে পারি না।

আপনি কীভাবে আপনার ব্যাশকে সত্যই হত্যা করে তা নির্ধারণ করে এবং সংকেতটি কোথায় উত্পন্ন হয়েছে এবং সেখানে সমস্যাটি স্থির করে তা নির্ধারণের মাধ্যমে বা সমস্যাটি সমাধান করতে পারে বা কোন সিগন্যালটি শেষ তা জানেন কেবল তখনই ইতিহাসটি ভাসাবেন (ধরে নেওয়া উচিত যে ডিস্কগুলি তখনও অনলাইনে রয়েছে ):

trap "echo got 1  >/tmp/sig1;  exit" SIGHUP
trap "echo got 2  >/tmp/sig2;  exit" SIGINT
trap "echo got 15 >/tmp/sig15; exit" SIGTERM
 .. and so on...

অন্তর্ভুক্ত স্ক্রিনশটটি দ্বিতীয় এবং তৃতীয় অনুচ্ছেদে আমি কী সম্পর্কে কথা বলছি তা বোঝায়। সেখানকার ক্রমটি আমি বাম দিক থেকে শেল করব , বাম শেলটি ডান দিক থেকে হত্যা করব এবং ইতিহাসটি বিড়াল করব।

মানুষ বাশ

প্রারম্ভকালে, (...) এইচআইএসটিফায়ালের মান অনুসারে ফাইলটি সঙ্কুচিত হয়, যদি প্রয়োজন হয় তবে হিস্টফিলিজ (+ ডিফল্ট 500) এর মান দ্বারা নির্দিষ্ট লাইনগুলির সংখ্যার বেশি না থাকে।

যদি হিস্টপেন্ড শেল বিকল্পটি সক্ষম করা হয় (এখানে + ডিফল্ট), লাইনগুলি ইতিহাস ফাইলে সংযুক্ত করা হয়, অন্যথায় ইতিহাস ফাইলটি ওভাররাইট করা হয়।

অনলাইন রেফারেন্স

3.7.6 সংকেত

যখন বাশ ইন্টারেক্টিভ হয়, কোনও ফাঁদগুলির অনুপস্থিতিতে, এটি সাইনটারমটিকে উপেক্ষা করে (যাতে 'কিল 0' একটি ইন্টারেক্টিভ শেলটি না মেরে) এবং সিগিন্ট ধরা পড়ে এবং পরিচালনা করা হয় (যাতে অপেক্ষা বিল্টিনটি বাধা দেয়)। বাশ যখন একটি সিগিন্ট পায়, এটি কোনও নির্বাহকারী লুপগুলি ভেঙে দেয়। সব ক্ষেত্রেই বাশ সিগুইটটিকে উপেক্ষা করে। যদি জব নিয়ন্ত্রণ কার্যকর হয় (জব কন্ট্রোল দেখুন), বাশ সিগটিন, সিগটো এবং সিগস্টটপ উপেক্ষা করে।

বাশ দ্বারা শুরু করা নন-বিল্টিন কমান্ডগুলির সিগন্যাল হ্যান্ডলারগুলি তার পিতামাতার কাছ থেকে শেলের দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত মানগুলিতে সেট থাকে। যখন কাজের নিয়ন্ত্রণ কার্যকর না হয়, অ্যাসিঙ্ক্রোনাস কমান্ডগুলি উত্তরাধিকার সূত্রে প্রাপ্ত এই হ্যান্ডলারের পাশাপাশি SIGINT এবং SIGQUIT উপেক্ষা করে। কমান্ড প্রতিস্থাপনের ফলস্বরূপ কমান্ডগুলি চালিত কীবোর্ড-উত্পাদিত চাকরি নিয়ন্ত্রণ সংকেতগুলি সিগটিটিন, সিগটো এবং সিগস্টটিপি উপেক্ষা করে।

শেলটি একটি SIGHUP প্রাপ্তির পরে ডিফল্টরূপে প্রস্থান হয়। প্রস্থান করার আগে, একটি ইন্টারেক্টিভ শেল চলমান বা বন্ধ হয়ে সমস্ত কাজগুলিতে SIGHUP কে পুনরায় পাঠায়। স্থগিত করা কাজগুলি তারা SIGHUP প্রাপ্ত তা নিশ্চিত করার জন্য SIGCONT প্রেরণ করা হয়। শেলটি কোনও নির্দিষ্ট জব্যে SIGHUP সিগন্যাল প্রেরণ করা থেকে বিরত রাখতে, এটি অস্বীকার করা বিল্টিন (জব কন্ট্রোল বিল্টিনস দেখুন) সহ চাকরি সারণী থেকে সরানো উচিত বা অস্বীকার -H ব্যবহার করে সাইনআপ গ্রহণ না করার জন্য চিহ্নিত করা উচিত।

যদি হুপোনেক্সিট শেল বিকল্পটি শাপ্টের সাথে সেট করা থাকে (দ্য শপ্ট বিল্টিন দেখুন), একটি ইন্টারেক্টিভ লগইন শেলটি প্রস্থান করার পরে বাশ সমস্ত চাকরিতে একটি SIGHUP প্রেরণ করে।

যদি বাশ কোনও কমান্ডটি সম্পন্ন হওয়ার অপেক্ষায় থাকে এবং একটি সিগন্যাল পায় যার জন্য একটি ফাঁদ সেট করা হয়েছে, কমান্ডটি শেষ না হওয়া পর্যন্ত ট্র্যাপটি কার্যকর করা হবে না। বাশ যখন ওয়েট বিল্টিনের মাধ্যমে একটি অ্যাসিক্রোনাস কমান্ডের অপেক্ষায় থাকে, তখন একটি সিগন্যালের অভ্যর্থনা যার জন্য একটি ফাঁদ সেট করা হয়েছিল 128 এর চেয়ে বেশি প্রস্থান স্থিতির সাথে প্রত্যাশিত বিল্টিনটি তত্ক্ষণাত্ ফিরে আসবে, তার পরেই ফাঁদ কার্যকর করা হবে।

প্রদর্শক স্ক্রিন শট

সংকেত


আপনি সেই স্ক্রিনশটে যা করছেন তা আমি সত্যিই পাই না। তুমি কী /tmp/psoহত্যা করছ? আমি বিভিন্ন কিল সংকেত সম্পর্কে আপনার বক্তব্যটি দেখতে পাচ্ছি (যদিও আপনি বলেছেন, আমি ভেবেছিলাম এটিই এর history -aসাথে মোকাবিলা করার জন্য রয়েছে)। আমি এটি পরীক্ষা করব এবং কিছুক্ষণের জন্য রিপোর্ট করব।
টেরডন

$ বিড়াল tmp / ps * \ n PS -o pid = | প্রধান -n1> ~ / tmp / pso \ n 17201 \ n
Ярослав r

0

/ ইত্যাদি / প্রোফাইল এবং /etc/profile.d/* চেক করুন

সেখানে ইতিহাসের সেটিংসে কিছু ঝামেলা রয়েছে।


ধন্যবাদ, তবে grep -r HIST /etc/profile.d/কিছুই দেয় না এবং আমি ইতিমধ্যে চেক করেছি /etc/profile
টেরডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.