আর্চলিনাক্সে গ্রেটফুল শাটডাউন


21

আমি জিনোম শেলের সাথে আর্চলিনাক্সে একটি চমত্কার শাটডাউন / পুনরায় বুট করার চেষ্টা করছি। এখন, আমি যখন শাট ডাউন করার জন্য বলি, খোলা ফাইলগুলি বন্ধ / সংরক্ষণের জন্য খোলা প্রোগ্রামগুলিকে সময় না দিয়ে তা অবিলম্বে বন্ধ হয়ে যায়। ফলস্বরূপ, যখনই আমি ক্রোম পুনরায় চালু করি (উদাহরণস্বরূপ) এটি আমাকে বলে যে অধিবেশনটি সঠিকভাবে বন্ধ হয়নি etc. ইত্যাদি ওয়েবে পড়ে আমি শিখেছি যে প্রক্রিয়াগুলি বন্ধ করার সময় সিস্টেমেড ছিল, প্রক্রিয়াটি বন্ধ না হলে এটি প্রথমে SIGTERMঅনুসরণ করে প্রেরণ SIGKILLকরে একটি নির্দিষ্ট সময়সীমা সহ। তবে আমি লক্ষ্য করেছি যে আমার সিস্টেমে SIGKILLতাত্ক্ষণিকভাবে প্রেরণ করা হয়েছে SIGTERMএবং আমি অনুমান করি এটি হ'ল একটি অসাধারণ প্রোগ্রাম সমাপ্তির কারণ।

আমি এমন কিছু ডকুমেন্টেশন পেয়েছি যা (যদি আমি এটি সঠিকভাবে পড়ি) বলে যে প্রেরণের আগে টাইমআউট বিকল্প SIGKILLদ্বারা সেট করা যেতে পারে TimeoutStopSec=। এছাড়াও প্রেরণ বিকল্প SIGKILLদ্বারা অক্ষম করা যেতে পারে SendSIGKILL=। কিন্তু আমি এই বিকল্পগুলি কোথায় কনফিগার করব তা খুঁজে পাচ্ছি না ... এমন কোনও সিস্টেমড শাটডাউন / রিবুট কনফিগারেশন ফাইল রয়েছে যেখানে আমি এই বিকল্পগুলি সেট করতে পারি?

সম্পাদনা করুন:

আমি কিছু পরীক্ষা করেছি এবং আমি দুটি আকর্ষণীয় জিনিস আবিষ্কার করেছি:

  1. আমি যদি ম্যানুয়ালি killall -SIGTERM chromeএইভাবে ক্রোমটি বন্ধ করি তবে এটি অভিযোগ করবে না যে এটি পরের বার আবার শুরু করার পরে সঠিকভাবে বন্ধ করা হয়নি। পরিবর্তে যদি আমি এটি বন্ধ করে রাখি তবে killall -SIGKILL chromeএটি অভিযোগ করবে। এটি আমাকে বলে যে ক্রোম সিগন্যরটার সঠিকভাবে পরিচালনা করছে।
  2. আমার শাটডাউন পদ্ধতির আউটপুটটি দেখে, Sending SIGTERM...তত্ক্ষণাত্ সিস্টেমড প্রিন্টগুলি অনুসরণ করা হবেSending SIGKILL...

নীচের মন্তব্য অনুসারে, সিস্টেমড কেবল তার প্রক্রিয়াগুলি পরিচালনা করছে। সুতরাং আমার ক্ষেত্রে জিডিএম। এটি আমাকে বলে যে সমস্যাটি হতে পারে:

  1. হয় জিডিএম এটির শিশু প্রক্রিয়াগুলি (উদাহরণস্বরূপ ক্রোম) সঠিকভাবে বন্ধ করে দিচ্ছে না (অর্থাত্ তাদের কাছে সিগন্টার পাঠিয়ে)
  2. বা সিস্টেমড জিডিএমকে তার শিশুদের সঠিকভাবে বন্ধ করার সময় না দিয়ে তাড়াতাড়ি একটি সিগ্কিল বার্তা প্রেরণ করছে।

আসলে জিডিএম কীভাবে তার বাচ্চাদের বন্ধ করে দেয় তা চেক / কনফিগার করার কোনও উপায় আছে?


1
সিস্টেমড কেবল এটির নিয়ন্ত্রণে কেবল প্রক্রিয়াগুলি সংকেত দেয়। ক্রোমের মতো জিনিসগুলি এই প্রক্রিয়াগুলির মধ্যে একটি নয়। সিস্টেমড আপনার ডিসপ্লে ম্যানেজারকে সিগন্যাল করবে (এক্সডিএম, জিডিএম, কেডিএম, যাই হোক না কেন), তারপরে এটি তার বাচ্চাদের সিগন্যাল করার জন্য ডিসপ্লে ম্যানেজারের উপর নির্ভর করবে এবং আপনি ক্রোম না আসা অবধি লাইনটি নিচে রেখে দেবেন। যদি কোনও কিছু ক্রোমকে সিগন্যাল করে না, xorg সার্ভারটি বন্ধ হয়ে গেলে এবং এটির প্রদর্শনটি চলে যায় it
প্যাট্রিক

@ পেট্রিক: ধন্যবাদ, আমি অনুমান করেছি। এজন্য আমি এই অনুযায়ী 'টাইমআউটসটপসেক = 90 এর দশকে' [পরিষেবা] '' / 'সেটিং / সিস্টেমেড / সিস্টেমেড / ডিপ্লিপ-ম্যানেজার.ওয়ারভাইস' বিভাগে যুক্ত করার চেষ্টা করেছি: ফ্রিডেস্কটপ.অর্গ.সোফটওয়্যার / সিস্টেমেড / ম্যান / সিস্টেমেড.সার্ভিস । এইচটিএমএল তবে কিছুই পরিবর্তন হয় না ... :(
lviggiani

ক্রোম উচিত অধীনে হতে systemd'sনিয়ন্ত্রণ - systemdহয় pid 1- কিন্তু পরে একটি subshell এবং পূজা চাইল্ড প্রসেস তার মোড়কের স্ক্রিপ্ট থেকে বের ক্রোম execs। তবুও, এটি zygotesযতক্ষণ না আপনার সিস্টেমটি যথাযথভাবে কনফিগার করা হয়েছে ততক্ষণ এটি হত্যার জন্য যা প্রয়োজন তা তা করবে । আপনি কি ক্রোমের জন্য সেই অস্থায়ী-স্থান সমাধানগুলির একটি ব্যবহার করছেন যা আপনি আর্ক উইকিতে প্রস্তাবিত পাবেন?
মাইকজারভ

1
আমি আর ডি তে কে ডি ও ফায়ারফক্সের সাথে একই ধরণের সমস্যায় পড়েছি। আমি কখনই কেন তা জানার চেষ্টা করতে পারিনি।
স্ট্রংব্যাড

2
জিডিএম প্রক্রিয়াগুলি সংকেত দিচ্ছে না। জিডিএম হ'ল জর্জি এবং পিএএম হুক আপ করার মূক উপায় way বাস্তব অভিযুক্ত ব্যক্তি হয় gnome-session
strugee

উত্তর:


2

আপনার ডেস্কটপটি গ্রেফতার করে শাটডাউন করার TimeoutStopSec=জন্য আপনাকে জিডিএম বা অন্য যে কোনও ডিসপ্লে ম্যানেজার ব্যবহার করছেন তা বাড়াতে হবে ।


আমার কাছে মনে হয় জিডিএম কখনই সিস্টেমডকে প্রথমে শট ডাউন করার কথা বলা উচিত ছিল না যদি এটি জানত না যে সমস্ত ক্লায়েন্ট বন্ধ হতে পারে কিনা।
ছদ্মবেশী

2

এটি জিনোম ৩.১২ সহ আমার আর্চ লিনাক্সে আমার জন্য কাজ করেছে। দেখা গেছে এটি সম্ভবত কনফিগারেশনের সাথে সম্পর্কিত /etc/gdm/PostSession/Default

  1. sudo pacman -S wmctrlউইন্ডোজ পরিচালনার জন্য wmctrl ইনস্টল করতে চালান ।

  2. সমস্ত উইন্ডো বন্ধ করার জন্য একটি এক্সিকিউটেবল ফাইল তৈরি করুন। উদাহরণস্বরূপ, আমি /home/[your_username]/bin/close-all-windowsএই লিখিত সামগ্রীগুলির সাথে এটি রেখেছি :

    #!/bin/sh
    wmctrl -l | while read -r line
    do
        wmctrl -c `echo "$line" | sed 's/.*  [0-9]* [your_hostname] //'`
    done
    
  3. এর /etc/gdm/PostSession/Defaultআগে এই বিষয়বস্তুগুলিকে সংশোধন করুন এবং যুক্ত করুন exit 0:

    echo " Closing selected windows programs gracefully"
    export DISPLAY=:0
    su [your_username] -c /home/[your_username]/bin/close-all-windows
    

আশা করি এগুলি কার্যকর হবে।


প্লাজমা 5 এর জন্য, এই স্ক্রিপ্টটিকে .config / প্লাজমা-ওয়ার্কস্পেস / শাটডাউন / এ রেখে সমস্যার সমাধান করে
এএফ

-1

sorpass এর wmctrl স্ক্রিপ্টটি আমার পক্ষে ভাল কাজ করে (CentOS 7 এ আমাকে প্রথমে 'yum ইনস্টল wmctrl' চালাতে হয়েছিল)। তবে আমি দেখতে পেলাম যে / ইত্যাদি / জিডিএম / পোস্টসেশন / ডিফল্ট কেবলমাত্র লগআউটে চালানো বলে মনে হয়, শাটডাউন নয়। সুতরাং / ইত্যাদি / জিডিএম / পোস্টসেশন / ডিফল্ট ব্যবহারের পরিবর্তে আমি এখন সিউম ফিলানের পাইথন স্ক্রিপ্ট থেকে sorpass এর wmctrl স্ক্রিপ্ট কল করি যা এই দুটি সাইটে পাওয়া যাবে:

স্ক্রিপ্টগুলির এই সংমিশ্রণটি ফায়ারফক্স, ক্রোম ইত্যাদি স্বয়ংক্রিয়ভাবে এবং পরিষ্কারভাবে বন্ধ করার জন্য দুর্দান্ত কাজ করে যখন আমি আমার সেন্টোস 7 ডেস্কটপ মেশিন লগআউট করি বা বন্ধ করি down দ্রষ্টব্য যে CentOS 7 এর সাথে আপনাকে এই পাইথন স্ক্রিপ্টটি কাজ করতে অবশ্যই 'yum ইনস্টল gnome-python2-gnome' চালাতে হবে।

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