কীভাবে সমস্ত পোস্টগ্রিজ প্রক্রিয়া সুন্দরভাবে বন্ধ করবেন


33

আপনি কীভাবে সমস্ত পোস্টগ্রিস প্রক্রিয়াগুলি pg_ctl(বা অন্যথায়) দিয়ে থামিয়ে রাখবেন , যখন আপনি ডাটাবেস ডিরেক্টরিটি মনে করেন না বা পিজিডিএটা এনভায়রনমেন্ট ভেরিয়েবল সংজ্ঞায়িত করেন না?

উত্তর:


58

এটি নিরাপদ:

sudo pkill -u postgres

এটি ব্যবহারকারী হিসাবে চলমান সমস্ত প্রক্রিয়াটিকে হত্যা করে postgres। বা:

pkill postgres

এটি 'পোস্টগ্রিস' নামক সমস্ত প্রক্রিয়াটিকে হত্যা করে।

( ) ব্যবহার করবেন না । ঠিক (বিকল্প ব্যতীত) একটি করে , যা আপনি চান।kill -9kill -KILLkillSIGTERM

বিকল্পভাবে, আপনি পোস্টগ্রেএসকিউএল সাথে সংযোগ স্থাপন করতে পারলে আপনি পিজডেটা অবস্থানটি পরীক্ষা করতে পারেন। উদাহরণ স্বরূপ:

sudo -u postgres psql -c "SHOW data_directory";

... অথবা এর পরিবেশের ভেরিয়েবলগুলি পরীক্ষা করে আপনি যেখানে পোস্টমাস্টারটি সনাক্ত করছেন । অন্য প্রক্রিয়াগুলির পিতা-মাতার একটিকে দেখুন । উদাহরণ স্বরূপ:/proc/[postmaster pid]/environps -fHC postgrespostgres

postgres   794     1  0 Nov06 ?        00:00:03 /usr/pgsql-9.3/bin/postgres -D /var/lib/pgsql/9.3/data -p 5432
postgres   857   794  0 Nov06 ?        00:00:00   postgres: logger process   
postgres   871   794  0 Nov06 ?        00:00:00   postgres: checkpointer process   
postgres   872   794  0 Nov06 ?        00:00:00   postgres: writer process   
postgres   873   794  0 Nov06 ?        00:00:00   postgres: wal writer process   
postgres   874   794  0 Nov06 ?        00:00:03   postgres: autovacuum launcher process   
postgres   875   794  0 Nov06 ?        00:00:07   postgres: stats collector process   

এটির ডেটাডিরটি সাধারণত তার কমান্ড লাইনে প্রদর্শিত হবে।


3

এটি কমান্ড এবং একই কমান্ডে পোস্টগ্রিজ দেখে আমাকে বিব্রত করে তোলে। কেবলমাত্র ব্যবহার করে প্রশ্নের উত্তর দিতে pg_ctl, এটি হবে:

pg_ctl -D $(psql -Xtc 'show data_directory') stop

-X আর্গুমেন্টটি .psqlrcফাইলটি উপেক্ষা করতে বলে । আপনি যদি কোনও ক্যোয়ারী (টাইমিং কমান্ডের মাধ্যমে) সময় গ্রহণের জন্য পিএসকিএল কনফিগার করে থাকেন তবে এটি দরকারী useful

-T আর্গুমেন্টটি আউটপুট শীর্ষে কলামের নাম এবং উত্পাদিত মোট সারির সংখ্যাটি মুছে ফেলতে বলে।

-C আর্গুমেন্টে কার্যকর করা হবে এমন এসকিউএল কোড রয়েছে।

খালি চালানো psql -c 'show data_directory'সম্ভবত নিম্নলিখিত আউটপুট উত্পাদন করবে:

      data_directory
--------------------------
 /path/to/postgresql/data
(1 row)

তাই, এই মাধ্যমে backticking $( ... )প্রদান করা হবে /path/to/postgresql/datapg_ctl এর -D যুক্তি, যা তারপর সুশৃঙ্খল পদ্ধতিতে ডাটাবেসের বন্ধ হবে হবে।


1
আমার ধারণা, এটি যদি আনুষ্ঠানিকভাবে কাজ করে বোঝানো হয় তবে এটি সঠিক উত্তর হওয়া উচিত। এটি একটি নতুন বিকল্প?
ম্যাট

এই সমাধানটি বিকল্পের পাশাপাশি PGDATAপরিবেশের পরিবর্তনশীল ব্যবহারের বিকল্পগুলি ব্যাখ্যা করে উপকৃত হবে । এই কমান্ডটি চালানোর ক্ষেত্রে আমার প্রয়াসটি ব্যর্থ হয়েছিল কারণ আমার লিনাক্স ব্যবহারকারীর নামের অধীনে এমন কোনও ডাটাবেস ছিল না।
স্টিফেন

show data_directoryকোনও ডাটাবেস নির্দিষ্ট না করে চালানো যেতে পারে এবং সত্যই আমার সার্ভারগুলির কোনওটিরই নামে আমার একটি ডেটাবেস নেই। এটির জন্যও পিজিডিটিএ প্রয়োজন হয় না, তাই আপনার ব্যর্থতা বর্ণনা করার জন্য আমি একটি ক্ষতির মধ্যে আছি।
15:25 এ dland

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