বাশ চাইল্ড প্রসেসির পিআইডি (ইমপিসেন্স) - আপনি এটি কীভাবে পাবেন?


15

কেউ কি আমাকে বলতে পারেন কীভাবে বাশে মৃত্যুদন্ড কার্যকর করা আদেশের পিআইডি পাবেন?

উদাহরণস্বরূপ আমার কাছে একটি বাশ স্ক্রিপ্ট রয়েছে যা ইমপ্যাসসিঙ্ক চালায়।

যখন স্ক্রিপ্টটি নিহত হয় ইমামসিঙ্ক প্রক্রিয়াটি সর্বদা নিহত হয় না, তাই আমি আমার স্ক্রিপ্ট থেকে প্রগতিগতভাবে ইমপ্যাকসিনের পিআইডি সনাক্ত করতে সক্ষম হতে চাই, যাতে আমি একটি সিগন্যাল হ্যান্ডলারের মাধ্যমে ইমপ্যাসসিঙ্ক প্রক্রিয়াটি নিজেকে মেরে ফেলতে পারি।

তাহলে আমি কীভাবে অগ্রণী বাশ স্ক্রিপ্ট থেকে শিশু প্রক্রিয়াটির পিআইডি পেতে পারি?


1
"পিডোফ ইমামসাইক" সম্পর্কে কীভাবে? এতে দোষ কী?
পিটার

2
আমি পিডোফ সম্পর্কে জানতাম না। তবে এখন আমি যা করি, এটি যতদূর আমি বলতে পারি এই দৃশ্যের জন্য কার্যকর নয়, কারণ পিডোফ মনে হয় কোনও সিস্টেমে প্রদত্ত কমান্ডের সমস্ত প্রসেসকে ফিরিয়ে দেবে - এমনকি অন্যান্য স্ক্রিপ্ট / ব্যবহারকারীদের মালিকানাধীন। তদুপরি ইম্যাপসাইঙ্কটি আসলে একটি পার্ল স্ক্রিপ্ট, তাই আমি একটি পিডোফ পার্ল করবো যা আবার এমন প্রক্রিয়াগুলি প্রত্যাবর্তন করবে যা ইমপ্যাসসিঙ্ক নয় এবং অন্যান্য ব্যবহারকারীর অন্তর্ভুক্ত থাকতে পারে।
জেসন টান

জ্যাভিয়ার সঠিক। এই পৃষ্ঠাটি সংক্রান্ত আরও তথ্য প্রদান করবে ProcessManagement
14:10

উত্তর:


4

ইমপ্যাসসিঙ্কের যেখানে পিড লেখা আছে সেট করার একটি বিকল্প রয়েছে:

--pidfile: ফাইল যেখানে ইমেজসিঙ্ক পিড লেখা থাকে।


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

@ জেসনটান কেন একজন মানুষকে মাছ খেতে শেখায়, যখন আপনি তাকে একটি সুস্বাদু প্রাক রান্না করা ফিললেট উপহার দিতে পারেন, তাই তিনি ফিরে এসে আপনাকে কালকের জন্য আরও ডেকে আনে, তাই না? পুরানো পোস্টের জন্য দুঃখিত, তবে জ্যাভিয়ার্সের উপর এই উত্তরটি কেন গ্রহণ করবেন?
সিঙ্ক অবিচ্ছিন্ন

46
any_command args &
my_child_PID=$!

আইডাব্লু, ঠিক যেমন $$আপনার পিআইডি ধারণ করে, সর্বাধিক সম্পাদিত ব্যাকগ্রাউন্ড কমান্ডের$! পিআইডি রয়েছে ।


ধন্যবাদ, তবে ইমামসাইকটি ব্যাকগ্রাউন্ডে নেই এবং $! যদি আমি এটিকে পরবর্তী লাইনে ইম্পাসসিঙ্ক আহ্বানের পরে বা সিগন্যাল হ্যান্ডলারের প্রথম লাইনে প্রতিধ্বনিত হয় তবে সেট করা নেই। :-(
জেসন টান

6
যদি এটি সন্তানের কাঁটাচামচ এবং ব্যাকগ্রাউন্ড করে তবে কোথাও কোথাও সন্তানের পিআইডি সংরক্ষণ করা পিতামাতার দায়িত্ব। স্বাভাবিক অনুশীলন এটি কোথাও সংরক্ষণ করা হয় /var/run/whatever.pid। হতে পারে কোনও কমান্ড-লাইন বিকল্প আছে যাতে এটি কোথাও পিআইডি সংরক্ষণ করতে বলবে; যদি তা না হয় তবে এটি লেখককে জিজ্ঞাসা করা বা নিজেকে বাস্তবায়িত করার মতো বৈশিষ্ট্য বলে মনে হচ্ছে।
জাভিয়ের

1
পটভূমি উপর জোর দেওয়া । যদি কোনও প্রক্রিয়া ব্যাকগ্রাউন্ডে স্থাপন না করা হয় (যেমন সংযোজন সহ &), তবে $!ভেরিয়েবলটি অপরিবর্তিত।
ট্রেভর

1
আরও সাদৃশ্যযুক্ত সমাধানগুলিতে পরামর্শ দেওয়া হয়েছে (এর একটি উত্তর) কীভাবে সবে শুরু হওয়া প্রক্রিয়াটির প্রশস্ততা পাবেন ; এই উত্তরের সংযোজন হিসাবে, একটি মন্তব্য সেখানে বলে: ওহ, এবং "অন্নিলার": /bin/sh -c 'echo $$>/tmp/my.pid && exec program args' &- সিসফল্ট নভেম্বর 24 '10 এ 14:28
ইম্জেড - ইভান জ্যাকারিয়াশেভ

10

বিপরীতে pidof, pgrepকোন প্রসেসের জন্য এটি পিআইডি দেয় তা সীমাবদ্ধ করার জন্য বিভিন্ন ধরণের বিকল্প দেওয়া যেতে পারে। বিশেষত কার্যকর হতে পারে এমন একটি হ'ল বর্তমান প্রক্রিয়ার পিআইডি ব্যবহার করে পিপিআইডি ভিত্তিক নির্বাচন করা।

pgrep -P $$ imapsync

যা কেবলমাত্র ইমপিসেকের পিআইডি আউটপুট দেয় যদি তারা আপনার স্ক্রিপ্টের শিশু হয়।


0

কীভাবে মুহুর্তের মধ্যে পটভূমিতে ইমামসাইক লাগানো, পিআইডি পাওয়া এবং তারপরে এটি পূর্বাভাস দেওয়া যায় ... এরকম কিছু:

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