নোহুপ ব্যাকগ্রাউন্ড প্রক্রিয়াটি কেন খুন হচ্ছে?


10

আমি একটি দূরবর্তী সেশনের মাধ্যমে শেল স্ক্রিপ্ট শুরু করার চেষ্টা করেছি, যা কমান্ডটি ব্যবহার করে পটভূমিতে একটি প্রক্রিয়া শুরু করে।

nohup python3 run.py > nohup.out &

রিমোট সেশনটি বন্ধ হয়ে গেলে, প্রক্রিয়াটি এই বার্তাটির সাথে মারা যাচ্ছে:

সিগন্যাল সিগআপ

SIGHUP ধরা পড়ে তবে ডিমনাইজড হয় নি। থেকে প্রস্থান।

আমি বুঝতে পারি না; প্রক্রিয়াটি নোহুপ & ব্যাকগ্রাউন্ডে শুরু হওয়ার পরে কেন হত্যা করা হচ্ছে ?


1
শেল জব নিয়ন্ত্রণের সমস্ত অপ্রত্যাশিত আচরণে আমি বিভ্রান্ত হয়ে পড়ি। এখন আমি সম্পূর্ণভাবে ব্যাকগ্রাউন্ড টাস্ক ব্যবহার tmuxএবং উপেক্ষা করেছি nohupবা অস্বীকার করব।
সিয়ুয়ান রেন

উত্তর:


10

আপনার পাইথন প্রোগ্রামটি পূর্বাবস্থায় ফিরে এসেছে nohup

nohupএর সাথে হ্যাঙ্গআপ সিগন্যাল উপেক্ষা করে SIG_IGNএবং তারপরে একই প্রক্রিয়াতে আপনার প্রোগ্রামটি চেইন লোড করে।

আপনার পাইথন প্রোগ্রামটি হ্যাংআপ সিগন্যালের জন্য সিগন্যাল হ্যান্ডলিংয়ের তত্ক্ষণাত পুনরায় সেট করে তার নিজস্ব সিগন্যাল হ্যান্ডলারটি ইনস্টল করে। এই হ্যান্ডলারটি একটি অভ্যন্তরীণ ফাংশন পরীক্ষা করে (এটি খুব ভালভাবে ডিজাইন করা হয়নি, কিছু ত্রুটিযুক্ত অনুমানের ভিত্তিতে তৈরি করা হয়েছে, এটি যদি আমি দেখেছি তবে এটি) এবং স্থির করে দেয় যে একটি হ্যাঙ্গআপ সংকেত প্রাপ্তির যথাযথ ক্রিয়াটি সেই বার্তাটি মুদ্রণ করা এবং প্রস্থান করুন।

ডিজাইনের মাধ্যমে আপনার পাইথন প্রোগ্রামটি উপযুক্ত নয় nohup। জব কন্ট্রোল শেল এবং পসিক্স সেশন / জব শব্দার্থবিজ্ঞান সহ এমন একটি সিস্টেমে আপনাকে চাকরিটি নিযুক্ত করা দরকার disownযাতে শেলটি কখনই এটি সম্পর্কে জানতে না পারে এটির জন্য প্রথমে একটি হ্যাঙ্গআপ সংকেত প্রেরণ করতে পারে।

(এমনকি এটি সিস্টেমড অপারেটিং সিস্টেমগুলিতে পর্যাপ্ত নয় Because কারণ সিস্টেমড ব্যক্তিরা তাদের ব্যবহারকারী-স্থান লগইন সেশন মেকানিজমটিতে শূকরের কান খানিকটা তৈরি করেছেন, আপনারও নিশ্চিত করতে হবে যে সিস্টেমডের প্রক্রিয়াটি হ্যাঙ্গআপের পরিবর্তে সিস্টেম শাটডাউনকে ইঙ্গিত করে, প্রতিটি লগআউটে লগইন সেশনগুলিও লাথি মারছে না))

আরও পড়া


3
এটি কি তাদের পাইথন প্রোগ্রাম এটি করে, বা এটি পাইথন দোভাষী (/ রান-টাইম পরিবেশ) এটি তাদের পিঠের পিছনে নিঃশব্দে করে?
ইলকচাছু

এছাড়াও, ম্যাক ওএসে, এসএসএস সেশন থেকে লগ আউট করা আপনার শেল কাজগুলিকে হত্যা করে, এমনকি ব্যবহার শুরু করার পরেও nohup; এর প্রতিকার খুঁজে পাওয়া যায় নি
imhotap

ঠিক আছে, সমস্যাটি যদি সিগন্যাল হ্যান্ডলার হয় তবে ওপি কেবল সিগন্যাল হ্যান্ডলারকে এমন কোনও হ্যান্ডলারে পরিবর্তন করতে পারে যা প্রক্রিয়াটি হারাবে না। কে এই জাতীয় সংকেত হ্যান্ডলার ইনস্টল করে তার স্বাধীনভাবে কাজ করা উচিত। আমি এসএসএস সম্পর্কিত যুক্ত করতে চাই: কখনও কখনও প্রক্রিয়াটি বাঁচিয়ে রাখলেও সমস্যা হতে পারে। কয়েক বছর আগে আমি কিছু অনুমতি ত্রুটি বোঝার চেষ্টা করে বেশ কিছুটা সময় হারিয়েছি এবং শেষ পর্যন্ত, অপরাধী ছিল কারবেরোস: যখন ssh অধিবেশনটি টোকেনগুলি বন্ধ করা হয়েছিল, তখন আমাকে তার পরিবর্তে নতুন টোকেন তৈরি করতে হয়েছিল ssh অধিবেশন।
বাকুরিউ

@ জেডিবিপি আমি চেষ্টা করেছি setsid nohup python3 run.py > nohup.out &, সেটসিড এই সমস্যাটি সমাধান করেছেন। এটি কি সঠিক পন্থা?
মোস্টওয়ান্টেড মণি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.