সংক্ষিপ্ত উত্তর : SIGTERM30 সেকেন্ড পরে, পাঠান SIGKILL। এটি হ'ল প্রেরণ করুন SIGTERM, কিছুক্ষণ অপেক্ষা করুন (এটি প্রোগ্রাম থেকে প্রোগ্রামে পরিবর্তিত হতে পারে, আপনি আপনার সিস্টেমটি আরও ভাল জানেন তবে 5 থেকে 30 সেকেন্ডই যথেষ্ট a কোনও মেশিন বন্ধ করার সময় আপনি দেখতে পাবেন যে এটি স্বয়ংক্রিয়ভাবে 1'30s পর্যন্ত অপেক্ষা করবে)। তাড়াহুড়া কেন, সর্বোপরি?), তারপর প্রেরণ করুন SIGKILL।
যুক্তিসঙ্গত উত্তর : SIGTERM, SIGINT, SIGKILL
এই যথেষ্ট বেশী। প্রক্রিয়া খুব সম্ভবত আগে শেষ হবে SIGKILL।
লং উত্তর : SIGTERM, SIGINT, SIGQUIT, SIGABRT,SIGKILL
এটি অপ্রয়োজনীয়, তবে কমপক্ষে আপনি আপনার বার্তা সম্পর্কিত প্রক্রিয়াটি বিভ্রান্ত করছেন না। এই সব সংকেত না মানে আপনি প্রক্রিয়া কি করছে এবং প্রস্থান করা হয় বন্ধ করতে চান।
এই ব্যাখ্যা থেকে আপনি যে উত্তরটি বেছে নিচ্ছেন তা বিবেচনা করুন না, তা মনে রাখবেন!
যদি আপনি কোনও সংকেত প্রেরণ করেন যার অর্থ অন্যরকম কিছু হয় তবে প্রক্রিয়াটি এটিকে একেবারে ভিন্ন উপায়ে পরিচালনা করতে পারে (একদিকে)। অন্যদিকে, যদি প্রক্রিয়াটি সংকেতটি পরিচালনা করে না, আপনি সর্বোপরি যা প্রেরণ করবেন তা বিবেচনাধীন নয়, প্রক্রিয়াটি যাইহোক প্রস্থান করবে (যখন ডিফল্ট ক্রিয়াটি অবশ্যই শেষ করতে হবে)।
সুতরাং, আপনাকে অবশ্যই নিজেকে একজন প্রোগ্রামার হিসাবে ভাবতে হবে। আপনি কি কোনও ফাংশন হ্যান্ডলারকে কোড করার জন্য বলবেন SIGHUPযে কোনও কিছুর সাথে সংযোগযুক্ত একটি প্রোগ্রামটি ছেড়ে দিতে, বা আপনি আবার সংযোগের চেষ্টা করার জন্য লুপ করবেন? এখানেই মূল প্রশ্ন! এ কারণেই কেবল সংকেত প্রেরণ করা গুরুত্বপূর্ণ যার অর্থ আপনার উদ্দেশ্য কী।
প্রায় বোকা দীর্ঘ উত্তর :
টেবিল বেলোতে প্রাসঙ্গিক সংকেত রয়েছে এবং প্রোগ্রামটি তাদের পরিচালনা না করে এমন ক্ষেত্রে ডিফল্ট ক্রিয়া রয়েছে।
আমি যে আদেশটি ব্যবহার করার পরামর্শ দিচ্ছি তাতে আমি তাদের আদেশ দিয়েছি (বিটিডাব্লু, আমি আপনাকে এখানে যুক্তিযুক্ত জবাব না দেওয়ার পরামর্শ দিই ), যদি আপনার সত্যিই সমস্তটি চেষ্টা করার প্রয়োজন হয় (টেবিলটি শর্তাবলী অর্ডার করা বলা মজা হবে) তারা ধ্বংস করতে পারে তবে এটি সম্পূর্ণ সত্য নয়)।
তারকাচিহ্ন (*) সহ সংকেতগুলি প্রস্তাবিত নয় । এগুলি সম্পর্কে গুরুত্বপূর্ণ বিষয়টি হ'ল এটি কখন কী করার প্রোগ্রাম করা হয়েছে তা আপনি কখনই জানেন না। বিশেষ SIGUSR! এটি সর্বনাশ শুরু করতে পারে (এটি কোনও প্রোগ্রামারের জন্য তিনি / সে যা চান তাই করুন এটি একটি নিখরচায় সংকেত!)। তবে, যদি পরিচালনা না করা হয় বা সম্ভাব্য ক্ষেত্রে এটি সমাপ্তির জন্য পরিচালিত হয়, তবে প্রোগ্রামটি শেষ হবে।
সারণীতে, একটি মূল ডাম্পের সমাপ্তি এবং উত্পন্ন করার জন্য ডিফল্ট বিকল্পগুলির সংকেতগুলি শেষের দিকে খুব আগে রেখে দেওয়া হয়েছে SIGKILL।
Signal Value Action Comment
----------------------------------------------------------------------
SIGTERM 15 Term Termination signal
SIGINT 2 Term Famous CONTROL+C interrupt from keyboard
SIGHUP 1 Term Disconnected terminal or parent died
SIGPIPE 13 Term Broken pipe
SIGALRM(*) 14 Term Timer signal from alarm
SIGUSR2(*) 12 Term User-defined signal 2
SIGUSR1(*) 10 Term User-defined signal 1
SIGQUIT 3 Core CONTRL+\ or quit from keyboard
SIGABRT 6 Core Abort signal from abort(3)
SIGSEGV 11 Core Invalid memory reference
SIGILL 4 Core Illegal Instruction
SIGFPE 8 Core Floating point exception
SIGKILL 9 Term Kill signal
তারপর আমি এই জন্য সুপারিশ করবে প্রায় মূঢ় দীর্ঘ উত্তর :
SIGTERM, SIGINT, SIGHUP, SIGPIPE, SIGQUIT, SIGABRT,SIGKILL
এবং অবশেষে,
অবশ্যই বোকা দীর্ঘ দীর্ঘ উত্তর :
বাড়িতে এটি চেষ্টা করবেন না।
SIGTERM, SIGINT, SIGHUP, SIGPIPE, SIGALRM, SIGUSR2, SIGUSR1, SIGQUIT, SIGABRT, SIGSEGV, SIGILL, SIGFPEএবং কিছুই, কাজ যদি SIGKILL।
SIGUSR2আগে চেষ্টা করা উচিত SIGUSR1কারণ প্রোগ্রামটি যদি সংকেতটি পরিচালনা না করে তবে আমরা আরও ভাল। এবং SIGUSR1যদি এটির মধ্যে কেবল একটির পরিচালনা করে তবে এটি পরিচালনা করার পক্ষে এটি আরও অনেক বেশি more
বিটিডাব্লু, কেআইএলএল : SIGKILLঅন্য উত্তর যেমনটি বলেছে তেমন কোনও প্রক্রিয়া প্রেরণ করা ভুল নয় । আচ্ছা, ভাবুন আপনি shutdownকমান্ড পাঠালে কী হয় ? এটি চেষ্টা করবে SIGTERMএবং SIGKILLকেবলমাত্র আপনি কেন মনে হয় যে বিষয়টি? এবং কেন আপনার অন্য কোনও সিগন্যালের দরকার হয়, যদি খুব shutdownকমান্ড কেবল এই দুটি ব্যবহার করে?
এখন, দীর্ঘ উত্তরের দিকে ফিরে , এটি একটি দুর্দান্ত অনলাইনার:
for SIG in 15 2 3 6 9 ; do echo $SIG ; echo kill -$SIG $PID || break ; sleep 30 ; done
এটি সিগন্যালের মধ্যে 30 সেকেন্ডের জন্য ঘুমায়। কেন অন্যথায় আপনি একটি প্রয়োজন হবে oneliner ? ;)
এছাড়াও, প্রস্তাবিত: যুক্তিসঙ্গত উত্তর15 2 9 থেকে কেবল সংকেত দিয়ে চেষ্টা করুন ।
সুরক্ষা : echoআপনি যেতে প্রস্তুত হলে দ্বিতীয়টি সরিয়ে দিন । আমি এটিকে অনলাইনকারীদেরdry-run জন্য বলি । সর্বদা এটি পরীক্ষা করার জন্য ব্যবহার করুন।
স্ক্রিপ্ট হত্যার
আসলে আমি এই প্রশ্নে এতটাই আগ্রহী ছিলাম যে ঠিক করার জন্য আমি একটি ছোট স্ক্রিপ্ট তৈরি করার সিদ্ধান্ত নিয়েছি। দয়া করে এটি ডাউনলোড করতে নির্দ্বিধায় (ক্লোন) এখানে:
কিলগ্র্যাসিফিউলি রিপোজিটরিতে গিটহাব লিঙ্ক