কোনও অ্যাপ্লিকেশনটি সঠিকভাবে বাইরে না এসে টার্মিনাল উইন্ডোটি বন্ধ করা কি ক্ষতিকারক?


18

উবুন্টু 12.04 এলটিএস ব্যবহার করে, আমার প্রশ্নটি হ'ল আমি যদি কোনও টার্মিনাল উইন্ডোতে একটি অ্যাপ্লিকেশন শুরু করি, তবে প্রথমে অ্যাপ্লিকেশনটি সঠিকভাবে বন্ধ না করে কেবলমাত্র টার্মিনাল উইন্ডোটি বন্ধ করার বিষয়ে খারাপ কিছু আছে? উদাহরণস্বরূপ, আমি ম্যাটল্যাব ব্যবহার করি। আমি একটি টার্মিনাল খুলি এবং টাইপ করি

matlab -nodisplay -nodesktop -nosplash

এবং তারপরে স্ক্রিপ্টগুলির একগুচ্ছ চালান। তাহলে আমিও পারি

exit

ম্যাটল্যাব শেষ করতে এবং তারপরে টার্মিনাল উইন্ডোটি বন্ধ করুন বা কেবল টার্মিনাল উইন্ডোটি বন্ধ করুন। এই দুটি পদ্ধতির মধ্যে আসলেই পার্থক্য কী? দ্বিতীয় পদ্ধতিটি কি কোনওভাবে কোনওভাবে "ক্ষতি" করে? প্রথম পদ্ধতি পছন্দ হয়? কেন?

উত্তর:


22

সাধারণভাবে এটি এইভাবে এটি করা ঠিক হবে।

টার্মিনাল উইন্ডোটি বন্ধ করার জন্য আপনি যখন "এক্স" ক্লিক করেন, তখন এটি আপনার ডেস্কটপ থেকে (জিনোম, কে। যেহেতু আপনি এই শেলটিতে ম্যাটল্যাব চালাচ্ছেন এটি টার্মিনাল অ্যাপ্লিকেশনে একটি শিশু প্রক্রিয়া হিসাবে বিবেচিত।

পিতামাতার প্রক্রিয়া হওয়ার দায়িত্বের অংশটি হ'ল আপনি বদলে আপনার বাচ্চাদের কাছে এই একই ঘনিষ্ঠ "সংকেত" পাঠান।

এখন যদি আপনি ধারণাগতভাবে বুঝতে পারি যা আমি কেবল ব্যাখ্যা করেছি তবে আসুন আসল পরিভাষাটির আরও কিছু অংশে প্রতিস্থাপন করুন।

সংকেত

"সিগন্যাল" দিয়ে প্রথমে, ইউনিক্স প্রসেসগুলিতে আপনি প্রেরণ করতে পারেন এমন বিভিন্ন সিগন্যালের পুরো পরিবার রয়েছে । এটা সহজ রাখা আছে 4 যে আপনি প্রায়ই দেখতে পাবেন, SIGHUP, SIGTERM, SIGINT, এবং SIGKILL

  • SIGHUP

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

  • SIGTERM

    SIGTERM সিগন্যাল একটি সাধারণ সিগন্যাল যা প্রোগ্রামের সমাপ্তির কারণ হিসাবে ব্যবহৃত হয়। সিগ্কিলের বিপরীতে, এই সংকেতটি অবরুদ্ধ, পরিচালনা ও উপেক্ষা করা যেতে পারে। বিনীতভাবে কোনও প্রোগ্রামটি শেষ করতে বলার স্বাভাবিক উপায়।

  • SIGINT

    যখন ব্যবহারকারী INTR অক্ষরটি (সাধারণত সিসি) টাইপ করে তখন সিগিন্ট ("প্রোগ্রামের বাধাদান") সিগন্যাল প্রেরণ করা হয়।

  • SIGKILL

    সিগ্কিল সিগন্যালটি তাত্ক্ষণিক প্রোগ্রামের সমাপ্তির জন্য ব্যবহৃত হয়। এটি পরিচালনা বা উপেক্ষা করা যায় না এবং তাই সর্বদা মারাত্মক। এই সংকেতটি ব্লক করাও সম্ভব নয়।

দ্রষ্টব্য: SIGINT আপনি যখন কমান্ড লাইন থেকে কোনও প্রোগ্রাম চলমান মাঝখানে থাকাকালীন "ব্রেক" করতে Ctrl+ ব্যবহার করেন তখন কী পাঠানো হয় C

কোনটি ব্যবহার হচ্ছে?

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

কমান্ড কমান্ড

খারাপ নামকরণ করা কমান্ড ব্যবহার করে আপনি নিজে সিগন্যাল প্রেরণ করতে পারেন kill,। সুতরাং SIGTERMআপনার টার্মিনাল বা SIGHUP to MATLAB, you could determine their PID usingPS` এ সিগন্যাল প্রেরণ করতে এবং তারপরে তাদের এই সংকেত প্রেরণের জন্য এই কমান্ডটি চালান:

$ kill -SIGTERM <PID>

অথবা এটা:

$ kill -SIGHUP <PID>

আপনি এই আদেশটি ব্যবহার করে সিগন্যালের একটি সম্পূর্ণ তালিকা পেতে পারেন:

$ kill -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP
 6) SIGABRT  7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
...
...

লক্ষ করুন যে সংকেতের সংখ্যা আছে? আপনি প্রায়শই তাদের নামগুলির পরিবর্তে এগুলি ব্যবহার করতে দেখবেন:

$ kill -15 <PID>

বা কুখ্যাত -9, যা বেশিরভাগ প্রক্রিয়া হত্যা করতে পারে।


আমি সবসময় এই সংখ্যাগুলি নেতিবাচক বলে ভেবেছিলাম তবে সেগুলি আসলে কমান্ড-লাইনের যুক্তি। আমি নতুন কিছু শিখলাম: ডি
টমাস

1
HUP - হ্যাঙ্গআপ - এমন একটি সংকেত যা আপনি যদি টার্মিনালের জন্য "লাইনটি আলগা" করেন তবে প্রেরণ করা হয়, যেমন আপনি মডেম দ্বারা ইউনিক্স-সার্ভারের সাথে সংযুক্ত ছিলেন। এটি সম্ভবত সবচেয়ে "সৌম্য" সংকেত যা কোনও প্রক্রিয়া শেষ করে। বেশিরভাগ ডেমোনগুলি প্রস্থান করবে না তবে তাদের কনফিগারেশন ফাইলগুলি এইচইপিতে পুনরায় পড়বে। নোহপ কমান্ড শেলটি বন্ধ হওয়ার পরে একটি পটভূমি-প্রক্রিয়া চালিয়ে যেতে দেয়। স্ক্রিনের মতো কমান্ডগুলি হ্যাঙ্গআপ থেকে বেঁচে থাকে এবং এইচইউপি থেকে কমান্ডগুলিকে অন্তরক করে।
বার্ড কোপ্পেরুদ

@ বার্ডকপ্পেরড - ধন্যবাদ, আমি ইচ্ছাকৃতভাবে এইচইউপিকে ছেড়ে দিয়েছি, আলোচনাটি বিভ্রান্ত করতে চাইনি।
slm

@ বার্ডকপার্পিউড - আমি মনে করি আপনি যা নির্দেশ করছেন তা হ'ল: "নিয়ন্ত্রণ নিয়ন্ত্রণকারী টার্মিনালটি বন্ধ হয়ে যাওয়ার পরে সিআইএইচএইচপি সংকেত প্রক্রিয়ায় প্রেরণ করা হয় It এটি মূলত সিরিয়াল লাইন ড্রপের প্রক্রিয়াটি অবহিত করার জন্য তৈরি করা হয়েছিল modern আধুনিক সিস্টেমে, এই সংকেত সাধারণত এর অর্থ হ'ল ছদ্ম বা ভার্চুয়াল টার্মিনাল নিয়ন্ত্রণ করা বন্ধ করা হয়েছে "আমি স্বীকার করি আমি আমার বিবরণীতে কিছুটা মিথ্যা বললাম তবে এটি সহজ রাখার চেষ্টা করছিলাম।
slm

@ বার্ডকপ্পেরুড - আমি দোষী বোধ করলাম তাই যা চলছে তা আরও নিখুঁতভাবে প্রতিবিম্বিত করতে আমি আমার উত্তরটি পরিবর্তন করেছি। ধন্যবাদ!
slm

2

এটি সম্ভবত ঠিক আছে তবে আপনি কী অ্যাপ্লিকেশনগুলি খোলেন তার উপর নির্ভর করে আপনি ডেটা হারাবেন। উদাহরণস্বরূপ, যদি আপনার কাছে একটি ফাইল সম্পাদক খোলা থাকে, আপনি যদি সংরক্ষণ এবং সঠিকভাবে প্রস্থান না করেন তবে আপনার কিছু পরিবর্তন হারাতে পারেন। আপনি যদি উদ্বিগ্ন থাকেন তবে ঠিকমতো টার্মিনালটি লগ আউট / প্রস্থান করুন। আপনি যদি টাইপিং পছন্দ করেন না exitবা logoutকেবল চেষ্টা করুন Ctrl-D


কেন ভাল হবে? অ্যাপ্লিকেশনটি SIGTERM এর পরিবর্তে SIGHUP পেতে চলেছে, তবে এটি এখনও একটি সিগন্যালের দ্বারা নিহত হচ্ছে, তাই আমি একে একে "সংরক্ষণ করুন এবং সঠিকভাবে প্রস্থান করুন" ঠিক বলব না
মাইকেল মরোজেক

যতদূর Ctrl-D, এটি কেবলমাত্র কমান্ড প্রম্পটে প্রয়োগ হয়।
চিহ্নিত করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.