পরিষেবা (নীরব) হিসাবে কোনও প্রোগ্রাম কীভাবে চালাবেন?


23

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

ধন্যবাদ


পিএইচপি এই উত্তরে উল্লিখিত হয়েছে তবে এটি পাইথনের ক্ষেত্রেও প্রযোজ্য: জিজ্ঞাসুবন্টু

উত্তর:


9

এমনকি পুরানো বাশ ব্যবহার করছে এবং পটভূমিতে প্রক্রিয়াগুলি প্রেরণের জন্য, তবে আরও কয়েকটি উপায় রয়েছে .. তবে প্রাথমিক দুটি হ'ল:

1.)$~ your_command > outputfile_for_stdout &
        # runs your command in background, giving you only PID so you can exit that process by `kill -9 PID_of_process`
        # & goes at the end of row      


2.)$~ your_command > outputfile_for_stdout 
        # this will run your program normally
        # press  Ctrl + Z then program will pause
   $~ bg
        # now your program is running in background
   $~ fg
        # now your program came back to foreground
3.)you can run terminal window under screen command so it will live until you either kill it or you reboot your machine
   $~ screen
   $~ run_all_your_commands
       # Ctrl + A + D will then detach this screen
   $~ screen -r will reattach it

কিছু অন্যান্য দরকারী কমান্ড:

   $~ jobs
        # will show you all processes running right now, but without PID
   $~ ps
        # will show you all processes for actual terminal window

হুঁ, আমি এখন পর্যন্ত প্রক্রিয়াগুলি দেখতে 'শীর্ষ' কমান্ডটি ব্যবহার
করছিলাম

দুর্দান্ত সমাধান। ১. বিকল্পটি পরিবর্তনের উপায় রয়েছে যাতে পিড কোনও ফাইলে সংরক্ষণ হয়। সুতরাং একটি লগ ফাইল এবং একটি পিড ফাইল উত্পন্ন হয়।
ওগুজ বিলজিক 21

27

এটি একটি ডেমন (পরিষেবা) এ পরিণত করুন
daemon --name="yourservicename" --output=log.txt sh yourscript.sh


7
$ servicename &

ব্যবহারের &ফলে প্রোগ্রামটি শেষ না হওয়া পর্যন্ত শেলটি ব্লক না করে পটভূমিতে প্রোগ্রামটি চালিত হয়।


না, তা হয় না। যেমন। dixon@dixon-vaio:~$ nautilus & [1] 11835। এটি প্রক্রিয়া আইডি রিটার্ন করে এবং আপনি নতুন শেল প্রম্পট পাবেন। এটিও পরীক্ষা করে দেখুন: http://unix.stackexchange.com/questions/3886/differences-between-nohup-disown- and
ডিক্সনসেক্স

1
আমি সংশোধন করেছি. ডাউন ভোট সরানো হয়েছে।
স্কট সিরিয়েনার্স


0

টার্মিনাল থেকে আপনি চালাতে screenবা অনুসরণ করতে পারেন আপনার কমান্ডটি দিয়ে &। অবিচ্ছিন্ন প্রক্রিয়া চালানোর সহজ উপায়।


&আমার মতে এই ক্ষেত্রে প্রক্রিয়াটি কেবল পটভূমিতে ব্যবহার করা সামান্য। ওপিতে বলা হয়েছে যে তার সার্ভারটি স্টডআউটে লগ করে, &তার টার্মিনালটি আউটপুট দিয়ে বিশৃঙ্খলাযুক্ত হবে। এছাড়াও যেহেতু ওপি টার্মিনালটি বন্ধ করার কথা উল্লেখ করেছে , ওপিতে প্রক্রিয়াটিকে আবার পূর্বাভাস করতে সক্ষম হবে না এবং সমস্ত লগ-আউটপুট নষ্ট হয়ে যাবে। আরও ভাল, অন্ততপক্ষে এটি কোনও লগ ফাইলে পুনর্নির্দেশ করা বা screenসেটআপের সাথে আটকে রাখা - তবে তারপরে দয়া করে screenওপি- র মূল বিষয়গুলি ব্যাখ্যা করুন (বিচ্ছিন্ন / সংযুক্তি / ইত্যাদি)
রবার্ট রিডেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.