কাজ বন্ধ আছে (ব্যাশ প্রস্থান করার সময়)


157

আমি There are stopped jobs.মাঝে মাঝে ব্যাশ শেলটি থেকে বেরিয়ে যাওয়ার চেষ্টা করার সময় আমি বার্তাটি পাই। পাইথন ২.x এ এখানে পুনরুত্পাদনযোগ্য দৃশ্য:

  • ctrl+ cব্যতিক্রম হিসাবে দোভাষী দ্বারা পরিচালিত হয়।
  • ctrl+ + zপ্রক্রিয়া 'স্টপ'।
  • ctrl+ + dবাস্তব জন্য প্রস্থানের পাইথন।

এখানে কিছু বাস্তব-বিশ্বের টার্মিনাল আউটপুট রয়েছে:

example_user@example_server:~$ python
Python 2.7.3 (default, Sep 26 2013, 20:03:06) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

ctrl+z

[1]+  Stopped                 python
example_user@example_server:~$ exit
logout
There are stopped jobs.

বাশ বেরোয়নি, আমাকে exitআবার ব্যাশ শেল থেকে বেরিয়ে আসতে হবে ।

  • প্রশ্ন: 'থামানো কাজ' কী, বা এর অর্থ কী?
  • প্রশ্ন: একটি থামানো প্রক্রিয়া আবার শুরু করা যেতে পারে?
  • প্রশ্ন: প্রথমে exitবন্ধ করা চাকরিগুলিকে মেরে ফেলে?
  • প্রশ্ন: শেলটি প্রথমবার থেকে বের হওয়ার কোনও উপায় আছে? ( exitদু'বার প্রবেশ না করে)

সিটিআরএল + শিফট + পাইথন থেকে বেরিয়ে আসবে।
থারস্মমনার

উত্তর:


205

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

আপনি jobsব্যাশ- এ বিল্টিন কমান্ড ব্যবহার করে যে কাজগুলি চালাচ্ছেন তা সম্ভবত অন্যান্য শেলও দেখতে পাবেন। উদাহরণ:

user@mysystem:~$ jobs
[1] + Stopped                python
user@mysystem:~$ 

আপনি fg(ফোরগ্রাউন্ড) ব্যাश অন্তর্নির্মিত কমান্ডটি ব্যবহার করে একটি থামানো কাজটি আবার শুরু করতে পারেন । আপনার যদি একাধিক কমান্ড বন্ধ হয়ে গেছে তবে কমান্ড লাইনে জবস্পেক নম্বরটি দিয়ে কোনটি আবার শুরু করতে হবে তা আপনাকে অবশ্যই উল্লেখ করতে হবে fg। যদি কেবল একটি প্রোগ্রাম বন্ধ হয়ে যায় তবে আপনি fgএকা ব্যবহার করতে পারেন :

user@mysystem:~$ fg 1
python

এই মুহুর্তে আপনি পাইথন ইন্টারপ্রেটারে ফিরে এসেছেন এবং কন্ট্রোল-ডি ব্যবহার করে প্রস্থান করতে পারেন।

বিপরীতভাবে, আপনি killএটির জবস্পেক বা পিআইডি দিয়ে কমান্ডটি দিতে পারেন । এই ক্ষেত্রে:

user@mysystem:~$ ps
  PID TTY          TIME CMD
16174 pts/3    00:00:00 bash
17781 pts/3    00:00:00 python
18276 pts/3    00:00:00 ps
user@mysystem:~$ kill 17781
[1]+  Killed                  python
user@mysystem:~$ 

জবস্পেক ব্যবহার করতে, শতাংশ (%) কী সহ সংখ্যাটি আগে:

user@mysystem:~$ kill %1
[1]+  Terminated              python

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

ব্যাশে মনে হচ্ছে আপনি logoutকমান্ডটি ব্যবহার করতে পারেন যা বন্ধ হওয়া প্রক্রিয়াগুলিকে হত্যা করবে এবং প্রস্থান করবে। এটি অনাকাঙ্ক্ষিত ফলাফলের কারণ হতে পারে।

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

নোট করুন যে আপনি ব্যাকগ্রাউন্ড প্রক্রিয়া তৈরি করতে পারেন যা তাদের ব্যবহারকারীর ইনপুটের প্রয়োজন হলে বন্ধ হবে:

user@mysystem:~$ python &
[1] 19028
user@mysystem:~$ jobs
[1]+  Stopped                 python

আপনি এই কাজগুলিকে একইভাবে পুনরায় চালু করতে এবং হত্যা করতে পারেন আপনি যে কাজগুলি Ctrl-zবাধাপ্রাপ্ত হয়ে থামিয়েছিলেন did


4
আমি তোমার দ্বিতীয় বাক্যটি দিয়ে কাঁপছি এটি বলা উচিত, "কাজটি বন্ধ হয়ে যাওয়ার কারণে এটি কোনও পদক্ষেপ নিতে পারে না - ফাইল I / O, নেটওয়ার্ক I / O, টার্মিনাল I / O, বা অন্য কোনও প্রসেসিং” "
স্কট

2
এটি আমাকে অনেক সাহায্য করে।
শেলবাই

দুর্দান্ত পোস্টটি যে কাউকে দুর্দান্ত সাহায্য!
জর্জ উদোসেন

18

প্রশ্ন: 'থামানো কাজ' কী, বা এর অর্থ কী?

বন্ধ হয়ে গেছে কাজ প্রক্রিয়া যার (স্টপ সংকেত পেয়েছি মানে SIGSTOP/ SIGTSTPকীবোর্ড (চরিত্র স্থগিত থেকে) Ctrl-Z), কমান্ড (যেমন kill -STOP [PID]) অথবা অন্য প্রক্রিয়া (যেমন কার্নেল যখন সিস্টেম রিসোর্স উপর অভাব) এবং বিরাম দেওয়া অবস্থায়, তাই এটি বন্ধ করতে ব্যবস্থা বলে / স্থগিত এমন কোনও প্রক্রিয়া যাতে এটি কোনও প্রয়োগ / প্রক্রিয়াজাতকরণ করে না।

সক্রিয় শেল কাজ তালিকা করা যেতে পারে: jobs

প্রশ্ন: একটি থামানো প্রক্রিয়া আবার শুরু করা যেতে পারে?

থামানো প্রক্রিয়াটি কেবলমাত্র SIGCONTসিগন্যাল প্রেরণ করা হলে এটি কার্যকর করা পুনরায় শুরু করবে । এটি fg(বা fg ID) দ্বারা অর্জন করা যেতে পারে যা অগ্রবর্তীভূমিতে কাজটিকে বর্তমান কাজ করে, bgপটভূমিতে অবিরত রাখার জন্য, বা SIGCONTসিগন্যাল প্রেরণ করে (উদাহরণস্বরূপ kill -CONT [PID]) এটি অর্জন করতে পারে।

প্রশ্ন: প্রথম প্রস্থান বন্ধ করা কাজগুলিকে মেরে ফেলে?

প্রথমবার যখন আপনি টাইপ exit/ logoutবা টিপুন Ctrl-D, শেলটি আপনার টার্মিনালের সাথে সম্পর্কিত বর্তমান সক্রিয় কাজের সম্পর্কে একটি সতর্কতা বার্তা প্রিন্ট করে, সুতরাং এটি দ্বিতীয়বার অ্যাকশনটি নিশ্চিত করে আপনার অনুমতি ব্যতীত আপনাকে হত্যা করবে না। তাহলে checkjobsবিকল্প (সক্রিয় করা হয় shopt -s checkjobs), এটি তাদের স্থিতিগুলিকে সঙ্গে কাজ তালিকাবদ্ধ করতে পারেন।

প্রশ্ন: শেলটি প্রথমবার থেকে বের হওয়ার কোনও উপায় আছে? (দু'বার প্রস্থান ছাড়াই)

আপনি Ctrl+Dদু'বার টিপতে বা এটিকে ধরে রাখতে পারবেন , এটি বর্তমান বন্ধ হওয়া / চলমান শেল্ট কাজগুলিকে দ্রুত হত্যা করে শেল শান্তভাবে প্রস্থান করবে।

বিকল্পভাবে তাদের অস্বীকার ( disown) তাদের ছেড়ে বা তাদের ম্যানুয়ালি হত্যা করতে: kill $(jobs -p)

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