লিনাক্সের একটি বন্ধ হওয়া প্রক্রিয়া কী?


12

সুতরাং আমি কমান্ড লাইন থেকে কিছু পিএইচপি স্ক্রিপ্ট চলছিল, এবং তাদের চলমান থামাতে চেয়েছিলেন।

আমি দৌড়ে গেলাম

$ ps aux | grep php
$ sudo kill 8754
$ sudo kill 8767

এবং তারপর দৌড়ে

$ ps aux | grep php

পুনরায় প্রক্রিয়াগুলি শেষ হয়ে গেছে তা পরীক্ষা করতে কিন্তু এই ধরণের আউটপুট পেয়েছে:

jon      8754  0.4 53.5 3044256 2205204 ?     T    10:34   0:15 php awesome_script.php
jon      8767  0.4 53.5 3044256 2205204 ?     T    10:34   0:15 php awesome_script.php
jon     12275  0.0  0.0   4156   892 pts/1    S+   11:27   0:00 grep --color=auto php

আমি তাকিয়ে কি টি বোঝানো রাষ্ট্র কলামে এবং আবিষ্কার করেন যে এটি বন্ধ মানে, কিন্তু আমি বুঝতে পারছি না কি মানে যে প্রক্রিয়া করছে।

আমি জানি আপনি পিএইচপি-তে নিজের নিজস্ব সিগন্যাল হ্যান্ডলিং তৈরি করতে পারেন , তবে আমি এটিটি করিনি, সুতরাং যখন পিএইচপি একটি সিগমেন্টার সিগন্যাল পায় তখন এটি কী করে?

(যদি কিছু হয়) কী করা বন্ধ হয়ে যায়?

উত্তর:


15

এর অর্থ প্রক্রিয়াটি একটি STOPসংকেত পেয়েছে , এবং এটি CONTসিগন্যাল না পাওয়া পর্যন্ত শেষ পর্যন্ত কিছুই করবে না termin

STOPসিগন্যালের সর্বাধিক সাধারণ উত্স হ'ল ^zপ্রক্রিয়াটি অগ্রভাগে থাকাকালীন ব্যবহারকারীরা হিট করে এবং CONTতারপরে প্রেরণের সাধারণ উপায়টি টাইপ করা হয় fgবা bgযা যথাক্রমে অগ্রভাগ এবং পটভূমিতে প্রক্রিয়াটি চালিয়ে যায়।

STOPএকটি প্রক্রিয়া প্রেরণ অন্য উপায় হল kill -STOP $pid। একইভাবে, CONTএকটি প্রক্রিয়া প্রেরণ করা যেতে পারে kill -CONT $pid

যেহেতু আপনি TERMপ্রক্রিয়াগুলিতে সিগন্যাল প্রেরণ করেছেন , তাই আমি ধরে নিচ্ছি আপনি চান সেগুলি বন্ধ করে দিন। এটি হওয়ার জন্য, প্রক্রিয়াগুলি অবশ্যই CONTসংকেত গ্রহণ করবে । আপনি kill -CONT 8754 8767একটি টার্মিনাল উইন্ডো টাইপ করে এটি পাঠাতে পারেন ।


কোনও কনট সিগন্যাল পাঠানো কি স্ক্রিপ্টটি শেষ না হওয়া পর্যন্ত চালুর অনুমতি দেবে? অথবা স্ক্রিপ্টটি তত্ক্ষণাত বন্ধ হয়ে যাবে?
জন

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

হুম, তাই আমি চালিয়ে একটি TERM প্রেরণ করেছি kill 8754যার ফলে প্রক্রিয়াটি শেষ পর্যন্ত সঠিকভাবে শেষ হতে পারে? আপনি কী জানেন যে সমাপনীকরণের সময়টি কোনও প্রক্রিয়াটি কখন আসবে? প্রদত্ত প্রক্রিয়াটি স্টপ রাজ্যে প্রবেশ করেছে, যেন এটি কোনও স্টপ সিগন্যাল পেয়েছে kill -STOP 8754, এটি কোনও টিআরএম সংকেত প্রেরণ করা হলে তাও ঘটতে পারে?
জন

TERMএটি অবিরত না হওয়া পর্যন্ত একটি সিগন্যালের কারণে থামানো প্রক্রিয়া শেষ হবে না । এটি KILLবন্ধ থাকা সত্ত্বেও এটি কোনও সংকেত পেলে অবিলম্বে বন্ধ হয়ে যাবে। আমি ধরে নিয়েছি কোনও প্রক্রিয়া শেষ হয়ে গেলে রান অবস্থায় থাকবে। আমি পিএইচপি-র সাথে খুব পরিচিত নই, এবং কেন একটি প্রক্রিয়া বন্ধ হয়ে গেল তা জানাতে জানি না, দুঃখিত। সাধারণত, যদিও প্রক্রিয়াগুলি থেমে থাকে না তবে তারা গ্রহণ করলে তা সমাপ্ত হয় TERM
এরোন

4

লিনাক্স / ইউনিক্সে থামানো প্রক্রিয়া এমন একটি প্রক্রিয়া / টাস্ক যা স্থগিত সিগন্যাল ( SIGSTOP/ SIGTSTP) পেয়েছিল যা কার্নেলকে এটি বন্ধ করার কারণে কোনও প্রসেসিং না করার জন্য বলে, এবং কেবলমাত্র SIGCONTসিগন্যাল প্রেরণ করা হলে এটি কার্যকর করা আবার শুরু করা যেতে পারে ।

মূলত বন্ধ হওয়া প্রক্রিয়াটি কার্নেলের কাছ থেকে একটি ধারাবাহিক সংকেতের জন্য অপেক্ষা করে, অনুরূপভাবে স্থগিত প্রক্রিয়া কার্নেল থেকে একটি জাগ্রত শর্তের জন্য অপেক্ষা করে।

লিনাক্স কার্নেল প্রক্রিয়া বলে: রেডি, রানিং, স্টপড, সাসপেন্ড, ট্রেসড, জম্বো

চিত্র ক্রেডিট: polytechnique.fr


লিনাক্স কার্নেলের প্রতিটি প্রক্রিয়া একটি task_structডেটা স্ট্রাকচার দ্বারা প্রতিনিধিত্ব করা হয় এবং প্রতিটি taskভেক্টর প্রতিটি পয়েন্টারের অ্যারে নিয়ে থাকে task_struct। যা সিস্টেমে কোনও প্রক্রিয়া বা কার্য বর্ণনা করে (হয় তা হয় unrunnable, runnableঅথবা stopped)। আরও তথ্যের জন্য দেখুন: প্রক্রিয়াগুলি এবং লিনাক্স ডেটা স্ট্রাকচার )।

আরও দেখুন: লিনাক্স কার্নেল: প্রক্রিয়া পরিচালনা


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