ইউনিক্সে বাধা না দেওয়ার পরিবর্তে কোনও প্রক্রিয়া শেষ হচ্ছে


12

Unixকমান্ড লাইন যদি আমি প্রেস Ctrl-C, যে একটি প্রক্রিয়া শেষ হয় না, বরং এটা বিঘ্নিত এবং আমি শেল প্রম্পট ফিরে যান।

সুতরাং, আমার নিম্নলিখিত দুটি প্রশ্ন রয়েছে:

    1. আমি কীভাবে সমস্ত বাধাপ্রাপ্ত প্রক্রিয়াগুলির তালিকা দেখতে এবং সেগুলি শেষ করতে পারি?
    1. কোনও প্রক্রিয়া বাধা না দিয়ে শেষ করতে কী কী সংমিশ্রণটি টিপতে হবে?

উত্তর:


20

Ctrl+ Cপ্রেরণ করে a SIGINT। ডিফল্টরূপে এটি অ্যাপ্লিকেশনটি সমাপ্ত করে।

আপনি এটি দিয়ে বিভ্রান্ত করছেন Ctrl-Z, যা ব্যাশে কোনও অ্যাপ্লিকেশন স্থগিত করে।


7

Icallyতিহাসিকভাবে এখানে তিনটি সংকেত ছিল কীস্ট্রোকগুলিতে আবদ্ধ

  • সাইন ইন (বাধা) সাধারণত Ctrl+ CবাDel
  • সংকেত - প্রস্থান - সাধারণত Ctrl+ এ আবদ্ধ\
  • SIGSUSP সাসপেন্ড - সাধারণত Ctrl+ এ আবদ্ধZ

কিছু * নিক্স স্বাদে অন্যান্য সংকেতগুলিও আবদ্ধ থাকে, আপনি কমান্ডটি ব্যবহার করে কীবোর্ড বাইন্ডিংগুলি পরীক্ষা করতে পারেন

stty -a

আমার সিস্টেমে, ওএস / এক্স, এটি নিম্নলিখিত আউটপুট উত্পাদন করে

speed 9600 baud; 65 rows; 213 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
    -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
    -extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel iutf8
    -ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
    -dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
    eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
    min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
    stop = ^S; susp = ^Z; time = 0; werase = ^W;

অনুগ্রহ করে নোট করুন এই উদাহরণে কিল একটি কিল সিগন্যাল নয় যা এটি বর্তমান ইনপুট বাফার সাফ করার জন্য করা উচিত।

সিগুয়েট ব্যবহার করে প্রক্রিয়া বন্ধ করার ক্ষেত্রে আপনার আরও সাফল্য হতে পারে, তবে প্রক্রিয়াটি সিগন্যালটি ধরে ফেলতে পারে এবং এটিকে উপেক্ষা করতে পারে বলে এটি সত্য হতে পারে না।

"বাধা" প্রক্রিয়াগুলির তালিকার কোনও ধারণা নেই কারণ প্রক্রিয়াটি বাধাকে ধরা পড়েছে বা উপেক্ষা করেছে বা এটি বেরিয়ে গেছে। আপনি চাকরি টাইপ করে স্থগিত প্রক্রিয়াগুলির একটি তালিকা পেতে পারেন


এটি আকর্ষণীয় যে আমি ^ কিউ এবং ^ এস প্রদর্শন করছি (আপনার মতো) তবে সেট করে রেখেছি stty -ixonযাতে সেগুলি পেরিয়ে যায়। আমি ভাবব তারা বদলে যাবে <undef>
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

আমার ওএস এক্স বক্স বা আমার ডেবিয়ান লেনি বক্সের ম্যান পেজগুলিতে আমি কোনও সিআইএসএসএসপি পাই না। এটি SIGTSTP বলে মনে হচ্ছে।
ডিএমকেকে --- প্রাক্তন-মডারেটর বিড়ালছানা

ডেল - আহ, প্ল্যান 9 ...
new123456

5

প্রচুর সঠিক উত্তর, তবে কোনওটিই সম্পূর্ণ নয়।

  1. অন্য অনেকে যেমন বলেছেন: কন্ট্রোল-সি সাধারণত ইউনিক্স সিগন্যাল সিগিন্ট প্রেরণ করে এবং ডিফল্ট আচরণ (এটি যে প্রোগ্রামগুলিকে ওভাররাইড করে না সেগুলি থেকে) "সমাপ্তির প্রক্রিয়া"। প্রোগ্রামটি এই সিগন্যালটিকে উপেক্ষা করতে বা ইচ্ছে করলে ভিন্ন পদক্ষেপ নিতে পারে।
  2. আপনি কন্ট্রোল- with এর সাহায্যে কীবোর্ড থেকে SIGQUIT প্রেরণ করতে পারেন \ এখানে পার্থক্যটি হ'ল ডিফল্টরূপে প্রক্রিয়াটি একটি মূল ফাইল লিখবে, তারপরে প্রস্থান করবে। প্রোগ্রামটি এই সিগন্যালটিকে উপেক্ষা করতে বা ইচ্ছে করলে ভিন্ন পদক্ষেপ নিতে পারে।
  3. চূড়ান্ত কুসংস্কারের সাথে এবং প্রক্রিয়াটি বন্ধ করার অনুমতি না দিয়ে আপনি সিক্কিল ব্যবহার করেন যা ডিফল্টরূপে কোনও কীতে আবদ্ধ নয়। পরিবর্তে আপনি kill (1)কমান্ডটি ব্যবহার করে এটি প্রেরণ করুন এবং সিগন্যালটি নির্দিষ্ট করে পাঠানোর জন্য

    $ kill -9 <process ID>
    

    বা স্মরণীয়ভাবে

    $ kill -KILL <process ID>
    

    এই সংকেতটি সরাসরি ওএস দ্বারা পরিচালিত হয় এবং প্রোগ্রামটি ডিফল্ট আচরণকে ওভাররাইড করতে পারে না

  4. যদি আপনার শেলটি জব নিয়ন্ত্রণকে সমর্থন করে তবে এটি কোনও বিল্ট সংস্করণকে সমর্থন করতে পারে killযা ক্যাটওয়াকের উত্তরের% মতো চরিত্রটি ব্যবহার করে কাজের পরিচয় সমর্থন করে ।

  5. পুনরায় শুরুযোগ্য-উপায়ে কোনও প্রক্রিয়া বিরতি দেওয়ার জন্য আপনি নিয়ন্ত্রণ-z ব্যবহার করেন যা SIGTSTP প্রেরণ করে। আপনি fgটার্মিনালের নিয়ন্ত্রণ অব্যাহত রাখতে বা টার্মিনালের নিয়ন্ত্রণ না রেখে bgচলমান সেট করার জন্য এ জাতীয় প্রক্রিয়াটি পুনরায় শুরু করুন (তবে ডিফল্টরূপে, এখনও তার আউটপুটটি সেখানে প্রেরণ করছেন)।

এছাড়াও, SIGQUIT এ ডাম্পিং কোর অনেকগুলি প্রশাসনিক বিবরণের উপর নির্ভর করে। সোলারিসের উপর ulimit -c, coreadm (1M) ইত্যাদি note
টাদিউস এ। কাদুউবস্কি

1
  1. পটভূমি প্রক্রিয়াগুলির তালিকা দেখতে: jobs

    হত্যার জন্য: kill %1(1 jobsআউটপুট হিসাবে একই আইডি আইটি বিকল্প )

  2. দেখতে এখানে

1

Ctrl-C SIGINT প্রেরণ করে, যা ডিফল্টরূপে কোনও প্রক্রিয়া শেষ হওয়ার কারণ হয়ে যায়, তবে আটকে যেতে পারে ( \bin shব্যবহার করে trap)।

সিগ্কিল হ'ল অদম্য কিল সংকেত।

তৃতীয় বার সম্পাদনা করুন , আমি মনে করি এটি সঠিক: আমি ডক্সের বিরুদ্ধে সমস্ত কিছু পরীক্ষা করেছি। আমরা দেখব.


সিগ্কিল ট্র্যাপযোগ্য নয়।

হাঁ। আমি ইতিমধ্যে এটি স্থির করে দিয়েছিলাম ...
চার্লস স্টুয়ার্ট

1

এটি বেশিরভাগ টার্মিনাল নবাবিদের কাছে পরিষ্কার নয় তবে আপনার সমস্যাটি যদি আপনি কেবল ইন্টারেক্টিভ প্রোগ্রামে থাকেন এবং কীভাবে qবেরোনোর ​​বিষয়টি আপনি বুঝতে না পারেন তবে প্রায়শই প্রস্থান করা হবে। উদাহরণস্বরূপ, এটি প্রস্থান করার মূল চাবিকাঠি less, এটি manঅন্যান্য বিষয়গুলির মধ্যে আপনি পৃষ্ঠাগুলি দেখার সময় আপনি যে প্রোগ্রামটি পান তাও ।

কিছু প্রোগ্রামের প্রস্থান করার জন্য অন্যান্য কীবোর্ড শর্টকাট রয়েছে। ইন vimবা vi, ব্যবহার ESC:wq। ইন emacs, ব্যবহার করুন Control-C Control-X। ইন nanoবা pico, ব্যবহার Control-X। মনে রাখবেন যে এই উদাহরণগুলিতে সূক্ষ্মতা রয়েছে, বিশেষত, সেই শর্টকাটগুলি আপনি সম্পাদনা করছেন যে ফাইলটিতে আপনি যে পরিবর্তন করেছেন সেটিকে সংরক্ষণ করে কিনা তা নয় concerning


তাহলে মান কী?
পেসারিয়ার

0

বিঘ্নিত সংকেত ধরার জন্য অনেকগুলি প্রক্রিয়া একটি বিঘ্নিত হ্যান্ডলার ইনস্টল করতে পারে তবে ডিফল্টরূপে বাতিল হবে না এমনগুলি।

কোনও প্রক্রিয়াটিকে জোর করে ছাড়তে, আপনি সিকুইটি (Ctrl- \) প্রেরণ করতে পারেন।


সিকুইট আটকা পড়তে পারে, সিক্কিল হতে পারে না।
চার্লস স্টুয়ার্ট

1
@ চার্লস: আর একটি পার্থক্য হ'ল সিগুয়েট ডিফল্টরূপে কোর ডাম্প করে, সিক্কিল দেয় না।
টাদিউস এ। কাদুউবস্কি

0

মনে হচ্ছে অন্যান্য উত্তরগুলি সম্ভবত দৃশ্যপট, তবে এটিও সম্ভব যে আপনি কোনও স্ক্রিপ্ট কার্যকর করছেন যা এর শিশুদের সঠিকভাবে পরিচালনা করতে পারে না। আমি সম্প্রতি একটি অনুরূপ দৃশ্যে হিট করেছি, যেখানে স্ক্রিপ্টটি মারা গেলে সেই স্ক্রিপ্টের শিশু প্রক্রিয়াগুলি মারা যায় না।

সাধারণভাবে, আপনি যদি এই পরিস্থিতিতে পড়েন তবে আপনাকে চালিত সমস্ত প্রক্রিয়া পর্যালোচনা করতে হবে। আপনার PS এর ম্যানপেজটি পর্যালোচনা করা উচিত। ( man ps) আমি বিশেষত ব্যবহার করা পছন্দ করি ps auxwf, যা প্রক্রিয়াগুলির মধ্যে পিতামাতার / সন্তানের সম্পর্ক দেখায়। pstreeঅনুরূপ কিছু করে। প্রক্রিয়াটি হত্যার আগে আপনাকে অন্য টার্মিনাল থেকে চালানো উচিত , পরিস্থিতিগুলিতে সাধারণ পরিস্থিতিতে কী দেখতে দেখতে এবং শিশু প্রক্রিয়াগুলি সনাক্ত করতে।

যদি আপনি সেই প্রধান প্রক্রিয়াটি (ডিগ্রি সেন্টিগ্রেড দিয়ে) হত্যা করেন তবে PS এর আউটপুট আবার পরীক্ষা করে দেখুন কিছুর কোনও পরিবর্তন হয়েছে কিনা। যদি শিশু প্রক্রিয়াগুলি এখনও অবধি থাকে তবে আপনি তাদের killকমান্ড দিয়ে হত্যা করতে পারেন । (দেখুন man kill)

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