ইউনিক্সঃ সিগন্যাল ও ট্র্যাপ (Unix – Signals and Traps)

রিদওয়ান বিন শামীম

 

সিগন্যাল হল সফটওয়ারের সংকেত যা নির্দেশ করে, লক্ষ্য করার মত কিছু ঘটেছে। এটি যেকোনো রকমের, ব্যবহারকারীর কোনও চাহিদা থেকে শুরু করে মেমোরির অনুমোদিত প্রবেশযোগ্যতা সংক্রান্ত, কোনও প্রোগ্রাম চাহিদা পূরণে সক্ষম নয় এমন যেকোনো কারণে সিগন্যাল দেখানো হতে পারে। এমন কয়েকটি কমন সিগন্যাল যা আমরা সচরাচর দেখি বা ব্যবহার করি, নিচের তালিকায় দেয়া হল।

 

সিগন্যালের নাম সিগন্যাল নাম্বার বিবরণ
SIGHUP 1 টার্মিনালে সমস্যা বা প্রক্রিয়ার সমাপ্তি
SIGINT 2 ইউজার ইন্টারাপ্ট ম্যাসেজ পাঠালে (Ctrl + C).
SIGQUIT 3 ইউজার সমাপ্তি ম্যাসেজ পাঠালে (Ctrl + D).
SIGFPE 8 ভুল গাণিতিক প্রচেষ্টা হলে
SIGKILL 9 প্রক্রিয়া সমাপ্তি ও কোনও ধরণের পরিষ্কার বা ক্লিনআপ বন্ধ
SIGALRM 14 এলারম ক্লক সিগন্যাল
SIGTERM 15 সফটওয়ার টারমিনেশন সিগন্যাল

 

সিগন্যালের তালিকা

kill -l কম্যান্ডের মাধ্যমে সাপোর্টেড সব সিগন্যাল তালিকাবদ্ধভাবে আমরা দেখতে পারি।


$ kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
 5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
 9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGSTKFLT
17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU
25) SIGXFSZ     26) SIGVTALRM   27) SIGPROF     28) SIGWINCH
29) SIGIO       30) SIGPWR      31) SIGSYS      34) SIGRTMIN
35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4
39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6
59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

সিগন্যালের মূল তালিকা সোলারিস, এইচপি –ইউএক্স ও লিনাক্সের মধ্যে কিছু ব্যতিক্রম হয়।

 

ডিফল্ট একশন

সিগন্যালের ডিফল্ট কিছু একশন হল,

  • প্রক্রিয়া টারমিনেট করে,
  • সিগন্যাল অগ্রাহ্য করে,
  • প্রক্রিয়ায় মেমোরি ইমেজ সমৃদ্ধ কোর ফাইল তৈরি করে,
  • প্রক্রিয়া থামায়,
  • থামানো প্রক্রিয়া চালু করে।

 

সিগন্যাল প্রেরণ করা

স্ক্রিপ্ট লেখার সময় CONTROL-C অথবা INTERRUPT কী চাপা সিগন্যাল প্রেরণের কমন উপায়, এছাড়াও kill কম্যান্ড ব্যবহার করে এটি করা যায়,


$ kill -signal pid

 

এখানে সিগন্যাল হয় নাম অথবা নাম্বার(সিগন্যালের) আর pid হল প্রসেস আইডি যাতে সিগন্যাল পাঠানো হবে।


$ kill -1 1001

 

process ID 1001 তে প্রক্রিয়াধীন ক্ষেত্রে kill signal পাঠাতে কম্যান্ড,


$ kill -9 1001

 

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

ট্র্যাপ কম্যান্ডের জন্য যে সিনট্যাক্স ব্যবহার করা যায় তা হল,


$ trap commands signals

 

সেল স্ক্রিপ্টে ট্র্যাপের ব্যবহার হয় এসব কারণে-

  • টেম্পোরারি ফাইল ক্লিনআপে
  • সিগন্যাল ইগনোর করতে

 

টেম্পোরারি ফাইল ক্লিনআপ করা

কিছু ফাইল রিমোভ করে এক্সিট করতে নিচের কম্যান্ড ব্যবহার করতে পারি,


$ trap "rm -f $WORKDIR/work1$$ $WORKDIR/dataout$$; exit" 2

 

স্পেসিফাইড ফাইল মুছার জন্য ট্র্যাপ মডিফাই করতে সিগন্যাল লিস্টে সিগন্যাল নাম্বার 1 যোগ করতে পারি,


$ trap "rm $WORKDIR/work1$$ $WORKDIR/dataout$$; exit" 1 2

 

সিগন্যাল এক ও দুই রিসিভ করার ক্ষেত্রে সাবস্টিটিউশন ঘটাতে চাইলে কম্যান্ডকে সিঙ্গেল কোটের মধ্যে লিখতে পারি,


$ trap 'rm $WORKDIR/work1$$ $WORKDIR/dataout$$; exit' 1 2

 

সিগন্যাল ইগনোর করতে

রিসিভের সময় সিগন্যাল ইগনোর করতে কম্যান্ড,


$ trap '' 2

 

মাল্টিপল সিগন্যাল ইগনোর করতে,


$ trap '' 1 2 3 15

 

প্রথম আর্গুমেন্টকে সিগন্যালের জন্য স্পেসিফাইড হতে হবে, যার নিজস্ব মানে থাকতে হবে,


$ trap 2

 

ট্র্যাপ রিসেট করতে কম্যান্ড ব্যবহার করা যায়,


$ trap 1 2

যা কিনা প্রথম আর্গুমেন্টের উপর ভিত্তি করে করতে হবে।

 

Permanent link to this article: http://bangla.sitestree.com/%e0%a6%87%e0%a6%89%e0%a6%a8%e0%a6%bf%e0%a6%95%e0%a7%8d%e0%a6%b8%e0%a6%83-%e0%a6%b8%e0%a6%bf%e0%a6%97%e0%a6%a8%e0%a7%8d%e0%a6%af%e0%a6%be%e0%a6%b2-%e0%a6%93-%e0%a6%9f%e0%a7%8d%e0%a6%b0%e0%a7%8d/

Leave a Reply