কোনও শেল স্ক্রিপ্ট 9 সিগন্যালের সাথে নিহত হয়েছে কিনা তা বলার কোনও উপায় আছে কি?


14

আমার কাছে বাশ স্ক্রিপ্ট রয়েছে (জাভা প্রোগ্রাম থেকে ডাকা) যা খুন হতে থাকে। আমি সর্বদা এটির signal 15সাথে ধরা করি trapতবে তারপরে আরও কিছু সংকেত আসে যে আমার সন্দেহ হয় signal 9তবে এটি আসলেই অন্ধ হয়ে পড়ে signal 9

আমি জানি আপনি পারবেন না trap signal 9, তাই signal 9আমার শেল স্ক্রিপ্টটি মেরে ফেলছে কিনা তা অন্য কোনও উপায়ে বলতে পারি ?


4
শেল স্ক্রিপ্ট কি চলছে? এই প্রক্রিয়াটি বা statusকোনও কিছুর মাধ্যমে শিশু প্রক্রিয়াটিতে অ্যাক্সেস থাকা উচিত wait(2)

একটি জাভা প্রোগ্রাম যা
ডেমোনের মতো আপস্টার্ট

1
আপনি প্রোগ্রামটি স্ট্রেস করতে পারেন এবং এমন একটি লাইনের সন্ধান করতে পারেন যা বলছে " -a entry,always -F arch=b64 -S kill -k kill_signals
সিক্কিলের

উত্তর:


20

একটি নিহত কমান্ডের প্রস্থান স্থিতিটি সিগন্যাল নম্বর 128 হওয়া উচিত So সুতরাং আপনি কোন সিগন্যালটি প্রক্রিয়াজাত করেছেন তা নির্ধারণের জন্য আপনি প্রস্থান স্থিতিটি ব্যবহার করতে পারেন।

আমি শেলের লিনাক্সে এটির মতো পরীক্ষা করেছি:

print_exit_status_for_signal () {
  (
    sleep 1000
    echo Exit staus $? = signal $(( $? - 128 ))
  ) &
  sleep 1
  killall "${1:+-$1}" sleep
}
print_exit_status_for_signal
print_exit_status_for_signal 15
print_exit_status_for_signal 9
print_exit_status_for_signal KILL
print_exit_status_for_signal TERM

সম্পাদনা: নোট করুন যে কোনও প্রোগ্রাম যে কোনও মান দিয়ে প্রস্থান করার সিদ্ধান্ত নিতে পারে (সুতরাং আপনাকে সিগন্যালের প্রভাব হিসাবে বহির্গমন স্থিতিতে কতটা ভরসা করতে হবে তা সিদ্ধান্ত নিতে হবে):

for i in $(seq 256); do
  sh -c "exit $i"
  echo Program exited with $?
done

পাদটীকা 1: আমার সিস্টেমে প্রস্থান কোডগুলি স্বাক্ষরযুক্ত 8-বিট সংখ্যা হিসাবে উপস্থাপিত হয় যাতে তারা 256 = 0 এ মোড় নেয়।


1
মনে রাখবেন এটি কেবল 9 সিগন্যালের জন্য নির্ভরযোগ্য যা আটকা পড়তে পারে না। অন্যান্য সংকেতগুলি প্রোগ্রাম দ্বারা আটকা যায় যা পরে কোনও মান সহ প্রস্থান করতে পারে।
GnP

হ্যাঁ, জিএনপি বলেছে, হত্যা -9 ফাঁসানো যাবে না
c4f4t0r

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