এখানে সাধারণত পোস্ট করবেন না তবে আমি এই চুলটি ছাপিয়ে যাচ্ছি। আমার কাছে পাইথন স্ক্রিপ্ট রয়েছে যা এটি চালু হওয়ার পরে কাঁটাচামচ করে এবং অন্যান্য প্রক্রিয়াগুলির একটি গোছা শুরু করার জন্য দায়ী। এই স্ক্রিপ্টটি সিস্টেভিটের মাধ্যমে প্রারম্ভকালে চালু করা হত, তবে সম্প্রতি আমি ডেবিয়ান জেসিতে আপগ্রেড করেছি তাই এটি সিস্টেমডের মাধ্যমে লঞ্চ করার জন্য রূপান্তরিত হয়েছে।
দুর্ভাগ্যক্রমে, আমি এমন একটি সমস্যা নিয়ে চলেছি যা আমি কার্যকর করতে পারি না। আপনি যখন কোনও স্ক্রিপ্ট সরাসরি ব্যবহারকারীর শেলটিতে চালু করেন, এটি তার চাইল্ড প্রসেসগুলি সঠিকভাবে চালু করে এবং স্ক্রিপ্টটি প্রস্থান করলে শিশু প্রক্রিয়াগুলি অনাথ হয় এবং চালিয়ে যাওয়া চালিয়ে যায়।
সিস্টেমযুক্ত মাধ্যমে চালু করার সময়, পিতামাতার প্রক্রিয়াটি বন্ধ হয়ে গেলে, শিশুরা সকলেই খুব প্রস্থান করে (আচ্ছা, স্ক্রিনটি যে তারা মরা অবস্থায় প্রবর্তন করে এবং মৃত হিসাবে উপস্থিত হয় ???)
আদর্শভাবে আমার সমস্ত শিশু প্রক্রিয়াটি না মেরে পিতা-মাতা স্ক্রিপ্টটি পুনরায় চালু করতে সক্ষম হওয়া দরকার, এমন কিছু আছে যা আমি মিস করছি?
ধন্যবাদ!
[Unit]
Description=Server commander
After=network.target
[Service]
User=serveruser
Type=forking
PIDFile=/var/Server/Server.pid
ExecStart=/var/Server/Server.py
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
সম্পাদনা: পাইথন স্ক্রিপ্টটি মূলত এটির শিশু প্রক্রিয়াগুলির জন্য একটি 'নিয়ামক' বলে উল্লেখ করা আমার পক্ষে সম্ভবত প্রাসঙ্গিক। এটি কেন্দ্রীয় সার্ভারের অনুরোধ অনুসারে gnu স্ক্রিনে সার্ভার শুরু করে এবং বন্ধ করে দেয়। এটি সাধারণত সর্বদা চলমান থাকে, এটি পরিষেবাগুলিকে স্প্যান করে এবং প্রস্থান করে না। কিছু ক্ষেত্রে আছে যেখানে আমি শিশু প্রসেসগুলি হত্যা না করে স্ক্রিপ্টটি পুনরায় লোড করতে সক্ষম হতে চাই, এমনকি এর অর্থ যদি প্রক্রিয়াগুলি পিডে অনাথ হয় 1. বাস্তবে, পাইথন স্ক্রিপ্টটি প্রক্রিয়াগুলি বন্ধ করে দিয়েছিল কিনা তা বিবেচ্য হবে না would একটি পিতামাতার প্রক্রিয়া, যদি এটি এমনকি সম্ভব হয়।
এটি কীভাবে কাজ করে তার একটি আরও ভাল ব্যাখ্যা:
- সিস্টেমযুক্ত স্প্যানস / সার্ভার.পি
- সার্ভার.পি সিস্টডের জন্য পিড ফাইলটি কাঁটাচামচ করে এবং লেখায়
- সার্ভার.পি তার নির্দেশাবলীর ভিত্তিতে gnu স্ক্রিনে সার্ভার প্রক্রিয়াগুলি তৈরি করে
- সার্ভার থেকে অনুরোধ করা যে কোনও পুনরায় সূচনা করতে সার্ভার.পি চালিয়ে যাচ্ছে
সিস্টেমড ছাড়াই লঞ্চ করার সময়, সার্ভার.পিটি পুনরায় আরম্ভ করা যেতে পারে এবং এটি যে জিএনও স্ক্রিনগুলি চালু করে তা ক্ষতিগ্রস্থ হয়। সিস্টেমড দিয়ে চালু করার সময়, সার্ভার.পি যখন বন্ধ হয়ে যায়, সেই স্ক্রিন প্রসেসগুলি পিড 1 এতিম হওয়ার পরিবর্তে তারা মারা যায়।
ExecStop=
দরকার নেই। সিস্টেমডের স্টপ-এ ডিফল্ট ক্রিয়া হ'ল প্রক্রিয়াগুলি হ্রাস করা। KillMode=
নির্দেশের জন্য আপনি ডকুমেন্টেশনটি একবার দেখে নিতে পারেন ।
simple
বা forking
, আসলে), শেষ অবলম্বন হবে Type=oneshot
, RemainAfterExit=yes
এবং KillMode=control-group
।
Server.py
কোড এবং কীভাবে লঞ্চ পরিষেবাগুলি কাঁটাচামচ করে (যদি তারা কাঁটাচামচ করে) কী করে তার বিবরণ না দিয়ে সমাধান সরবরাহ করা শক্ত । তবে, সাধারণভাবে বলতে গেলে, এটি একটি প্রস্তুতি প্রোটোকল মিল নেই ।