আপনার কাছে কয়েকটি বিকল্প রয়েছে। একটি হ'ল স্ক্রিপ্ট ( CtrlZ) থামানো, স্ক্রিপ্টের পিআইডি পেয়ে SIGKILL
প্রক্রিয়া গ্রুপে প্রেরণ করা।
শেলটিতে একটি কমান্ড কার্যকর করা হলে, প্রক্রিয়াটি শুরু হয় এবং এর সমস্ত শিশুরা একই প্রক্রিয়া গোষ্ঠীর অংশ হয় (এই ক্ষেত্রে, অগ্রভাগের প্রক্রিয়া গ্রুপ)। এই গোষ্ঠীর সমস্ত প্রক্রিয়াতে একটি সংকেত প্রেরণ করতে, আপনি এটি প্রক্রিয়া নেতার কাছে প্রেরণ করেন। জন্য kill
কমান্ড, প্রক্রিয়া নেতা এইভাবে প্রকাশ হয়:
kill -PID
PID
স্ক্রিপ্টের প্রক্রিয়া আইডি কোথায় ।
উদাহরণ:
একটি স্ক্রিপ্ট বিবেচনা করুন test.sh
যা কিছু প্রক্রিয়া আরম্ভ করে। বলুন আপনি এটি খোলসে চালিয়েছেন:
$ ./test.sh
অন্য টার্মিনালে,
$ pgrep test.sh
17802
$ pstree -ps `!!`
pstree -ps `pgrep test.sh`
init(1)───sshd(1211)───sshd(17312)───sshd(17372)───zsh(17788)───test.sh(17802)─┬─dd(17804)
├─sleep(17805)
└─yes(17803)
এই ক্ষেত্রে, তৈরি করা গোষ্ঠীটি প্রক্রিয়া করার জন্য একটি সংকেত প্রেরণ করতে test.sh
, আপনি যা করতে চাইবেন:
kill -INT -17802
-INT
প্রেরণ করতে ব্যবহৃত হয় SIGINT
, এবং তাই এই কমান্ডটি CtrlCটার্মিনালে টিপানোর সমতুল্য । পাঠাতে SIGKILL
:
kill -KILL -17802
আপনি কেবল অন্য স্ক্রিনটি খুলতে না পারলে স্ক্রিপ্টটি থামাতে হবে stop আপনি যদি পারেন pgrep
তবে পিআইডি সন্ধান করতে ব্যবহার করুন ।
স্ক্রিপ্টটি আরম্ভ করে এমন একটি কমান্ড আটকে থাকতে পারে SIGINT
, সম্ভবত CtrlCএটিই অকার্যকর। তবে, SIGKILL
আটকা যায় না এবং এটি সাধারণত সর্বশেষ-রিসোর্ট বিকল্প। হত্যার আগে আপনি SIGTERM
( -TERM
) চেষ্টা করতে পারেন । না হয় SIGKILL
বা উপায় SIGTERM
হিসাবে কীবোর্ড শর্টকাট হিসাবে সেট আপ করা SIGINT
যায় না।
যদি আপনার স্ক্রিপ্টে শেবাং লাইন না থাকে তবে এই সমস্ত কিছুই মুড। থেকে এই তাই উত্তর :
সাধারণত পিতামাত শেল অনুমান করে যে স্ক্রিপ্ট একই শেলের জন্য লেখা হয়েছে (ন্যূনতম বোর্নের মতো শেলগুলি / বিন / শ দিয়ে স্ক্রিপ্টটি চালায়, বাশ এটিকে বাশ সাবপ্রসেস হিসাবে চালায়) ...
এ কারণে, যখন স্ক্রিপ্টটি কার্যকর করা হয়, আপনি স্ক্রিপ্টের নামে একটি প্রক্রিয়া পাবেন না (বা কমান্ড লাইনে স্ক্রিপ্টের নাম সহ একটি প্রক্রিয়া) এবং pgrep
ব্যর্থ হবেন।
সর্বদা একটি শেবাং লাইন ব্যবহার করুন।
Ctrl + z