প্রক্রিয়া জাভা এখনও হত্যা করা হচ্ছে


11

আমার বিশ্ববিদ্যালয়ের সার্ভারগুলিতে আমার একটি জাভা প্রোগ্রাম চালানো দরকার। আমি দূরবর্তীভাবে তাদের সার্ভারের মাধ্যমে এসএসএসের মাধ্যমে লগ ইন করছি

সুতরাং আমি nohup যেমন ব্যবহার:

nohup java -jar project.jar &

তবে আমি যখন লগআউট করি এবং টার্মিনালটি বন্ধ করি তখন সার্ভারে আমার প্রক্রিয়াটি নিখোঁজ / নিখোঁজ হয়ে যায়।


পুনর্নির্দেশ stdoutএবং stderrকিছু ফাইলগুলিতে চেষ্টা করুন - আপনার প্রসেসটি বন্ধ টার্মিনাল stdout/ এ লেখার চেষ্টা করার সময় SIGHUP ব্যতীত অন্য সিগন্যালের মাধ্যমে মারা যেতে পারে stderr। যেমন কাজের সাইন >/dev/null 2>&1করার আগে আপনার আদেশে যুক্ত করুন command &
বরিস বুর্কভ

1
@ Bob এর সাথে প্রয়োজনীয় হওয়া উচিত নয় nohup- বেশিরভাগ বাস্তবায়নগুলি ডিফল্টরূপে এটি করবে যদিও stdinউদাহরণস্বরূপ পুনঃনির্দেশ করা প্রয়োজন হতে পারে </dev/null
গ্রিম

উত্তর:


14

nohupকেবলমাত্র প্রোগ্রামটির প্রতিরোধ ক্ষমতা SIGHUPএবং SIGQUITসংকেত তৈরি করুন। আধুনিক শেল আপনি আপনার সেশন থেকে লগআউট করার সময় সম্ভবত অন্যান্য সংকেত প্রেরণ করতে পারেন, তাই আপনার প্রোগ্রামটি নিহত না হওয়া এমনকি এমনকি এর অধীনে চলার কোনও গ্যারান্টি নেই nohup

আরও ভাল সমাধানটি ব্যবহার করা হয় tmuxবা screenআপনি যদি ব্যবহার করেন তবে আপনি bashচেষ্টা করতে পারেন:

$ java -jar project.jar &
$ disown

আপনি যদি ব্যবহার করেন তবে আপনাকে disownম্যানুয়ালি পুনঃনির্দেশ করা দরকার, উদাহরণস্বরূপ</dev/null &>/dev/null
গ্রীম

@ গ্রামীম: আমি মনে করি যদি আমরা শেলটি দিয়ে আর কাজ না করে (কেবল কমান্ড চালান এবং প্রস্থান করি), পুনর্নির্দেশের দরকার নেই।
cuonglm

ব্যবহার করে দেখুন ssh localhost 'sleep 10m & disown'bashপ্রস্থান করা হবে না।
গ্রীম

ঠিক আছে বলে মনে হচ্ছে sshযে যদি টার্মিনালের সাথে সংযুক্ত প্রোগ্রামগুলি থাকে তবে এটি প্রস্থান করে না। তবে উপরেরটি ঠিক আছে যদি আপনি ইন্টারেক্টিভভাবে চালান।
গ্রামীণ

লিনাক্স (জিএনইউ কোর্টিলস এবং ব্যস্তবক্স) এবং বিএসডি বাস্তবায়ন nohupকমান্ডটি অনাক্রম্য করে না SIGQUIT, কেবলমাত্র SIGHUP। এটি স্পষ্টভাবে স্ট্যান্ডার্ডের বিপরীতে হবে এবং আফাইক কেবলমাত্র (কিছু সংস্করণ?) সোলারিসে ঘটতে পারে।
ম্যাসভি

13

(কালক্রমে অক্ষম) এর জায়গায় আরও একটি বিকল্প nohup:

setsid java -jar project.jar </dev/zero &>/dev/null &

এটি কার্যকরভাবে প্রক্রিয়াটিকে "ডেমনাইজাইজ" করে। এটি এখন ইনিশির মালিকানাধীন, সুতরাং এটি কখনই এইচইউপিড পাবে না, এর আই / ও স্ট্রিমগুলি নিরাপদ এবং এটি ব্যাকগ্রাউন্ডে সজ্জিত করা হয়েছে।

দেখুন man setsidআরও তথ্যের জন্য। বিপরীতে screenবা tmux, এটি কোনও প্রোগ্রাম নয় যা মালিকানা দাবি করে এবং চালিয়ে যায়। এটি কেবল নিজস্ব প্রক্রিয়া গ্রুপে একটি প্রোগ্রাম শুরু করে ।


নোহুপ অকার্যকর কেন?
সিপিজিনিউসএমভি

@cpugeniusmv আমি নিশ্চিত যে এটি কোনও কিছুর জন্য ভাল তবে যাইহোক, আমি এটির জন্য প্রায়শই প্রস্তাবিত উদ্দেশ্যে, কোথাও লগ ইন করা, একটি প্রক্রিয়া শুরু করা এবং লগ আউট (অনেকটা ওপি এর মতো) হিসাবে নির্ভরযোগ্য মনে করি না। আমার ধারণা এটির অপব্যবহার হতে পারত এবং সম্ভবত setsidএইভাবে আরও কিছুটা মূর্খ প্রমাণ। এটি নোহুপ দ্বারা নির্দেশিত একটি পদক্ষেপ এড়িয়ে যায় (এতিম হিসাবে প্রবর্তন করে পুনরায় প্রক্রিয়াটি চালিয়ে যাওয়া)। nohupআপনি যদি পরে কাজটি সামনের দিকে অগ্রসর করতে চান তবে আরও নমনীয় হবে।
স্বর্ণলোক

@ টাফকা'গোল্ডিলকস 'আমি মনে করি সমস্যাটি স্ট্ডিন, স্টাডআউট এবং স্ট্ডারকে সামলানো, যা আসলে (তবে আংশিক (!)) নোহুপ দ্বারা পরিচালিত নয়। সৃুপ থেকে প্রক্রিয়াটি রক্ষা করে নোহুপ এটির মূল কাজটি বেশ ভালভাবে করেন। তবে প্রচুর জিনিস রয়েছে যা স্ট্রিমগুলির সাথে ভুল হতে পারে - বা আরও খারাপ, কখনও কখনও বাফার আকারের উপর নির্ভর করে ভুল হয়ে যায়। আমি বলব, নোহুপ ভুল নয়, তবে নোহপ কী প্রত্যাশা করে।
ভোলকার সিগেল

3

আরেকটি ধারণা স্ক্রিন কমান্ড ব্যবহার করা হবে। স্ক্রিন, বিচ্ছিন্নকরণ এবং লগআউট সহ একটি প্রোগ্রাম শুরু করা সম্ভব। এর পরে আপনি চলমান স্ক্রিন সেশনে লগইন করতে এবং সংযুক্ত করতে পারেন।

টিউটোরিয়াল: http://www.rackaid.com/blog/linux-screen-tutorial- এবং-how-to /


-2

STDOUT এবং STDERR দিয়ে আপনার নোহোপ চালানোর চেষ্টা করুন নালায় পুনর্নির্দেশ:

nohup java -jar project.jar 2>&1 &

1
আপনি কেবল স্ট্ডারকে স্টডআউটে পুনঃনির্দেশ করছেন, যা নোহপ কীভাবে পরিচালিত হয় সে সম্পর্কে কিছুই পরিবর্তন করে না (এটি উভয়কেই পুনঃনির্দেশ করে nohup.out)।
গিলস 'খারাপ হয়ে যাওয়া বন্ধ করুন'

1
-1, আমি মনে করি আপনি বোঝাতে চেয়েছিলেন nohup java -jar project.jar 2>/dev/null &তবে আপনি কী করছেন তা আপনি অবশ্যই জানেন না। এমনকি ভাল, এছাড়াও খাওয়ান stdin /dev/null
প্লাজমাপাওয়ার

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