আপনি কীভাবে সমস্ত পোস্টগ্রিস প্রক্রিয়াগুলি pg_ctl
(বা অন্যথায়) দিয়ে থামিয়ে রাখবেন , যখন আপনি ডাটাবেস ডিরেক্টরিটি মনে করেন না বা পিজিডিএটা এনভায়রনমেন্ট ভেরিয়েবল সংজ্ঞায়িত করেন না?
আপনি কীভাবে সমস্ত পোস্টগ্রিস প্রক্রিয়াগুলি pg_ctl
(বা অন্যথায়) দিয়ে থামিয়ে রাখবেন , যখন আপনি ডাটাবেস ডিরেক্টরিটি মনে করেন না বা পিজিডিএটা এনভায়রনমেন্ট ভেরিয়েবল সংজ্ঞায়িত করেন না?
উত্তর:
এটি নিরাপদ:
sudo pkill -u postgres
এটি ব্যবহারকারী হিসাবে চলমান সমস্ত প্রক্রিয়াটিকে হত্যা করে postgres
। বা:
pkill postgres
এটি 'পোস্টগ্রিস' নামক সমস্ত প্রক্রিয়াটিকে হত্যা করে।
( ) ব্যবহার করবেন না । ঠিক (বিকল্প ব্যতীত) একটি করে , যা আপনি চান।kill -9
kill -KILL
kill
SIGTERM
বিকল্পভাবে, আপনি পোস্টগ্রেএসকিউএল সাথে সংযোগ স্থাপন করতে পারলে আপনি পিজডেটা অবস্থানটি পরীক্ষা করতে পারেন। উদাহরণ স্বরূপ:
sudo -u postgres psql -c "SHOW data_directory";
... অথবা এর পরিবেশের ভেরিয়েবলগুলি পরীক্ষা করে আপনি যেখানে পোস্টমাস্টারটি সনাক্ত করছেন । অন্য প্রক্রিয়াগুলির পিতা-মাতার একটিকে দেখুন । উদাহরণ স্বরূপ:/proc/[postmaster pid]/environ
ps -fHC postgres
postgres
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
এটির ডেটাডিরটি সাধারণত তার কমান্ড লাইনে প্রদর্শিত হবে।
এটি কমান্ড এবং একই কমান্ডে পোস্টগ্রিজ দেখে আমাকে বিব্রত করে তোলে। কেবলমাত্র ব্যবহার করে প্রশ্নের উত্তর দিতে 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/data
pg_ctl এর -D যুক্তি, যা তারপর সুশৃঙ্খল পদ্ধতিতে ডাটাবেসের বন্ধ হবে হবে।
PGDATA
পরিবেশের পরিবর্তনশীল ব্যবহারের বিকল্পগুলি ব্যাখ্যা করে উপকৃত হবে । এই কমান্ডটি চালানোর ক্ষেত্রে আমার প্রয়াসটি ব্যর্থ হয়েছিল কারণ আমার লিনাক্স ব্যবহারকারীর নামের অধীনে এমন কোনও ডাটাবেস ছিল না।
show data_directory
কোনও ডাটাবেস নির্দিষ্ট না করে চালানো যেতে পারে এবং সত্যই আমার সার্ভারগুলির কোনওটিরই নামে আমার একটি ডেটাবেস নেই। এটির জন্যও পিজিডিটিএ প্রয়োজন হয় না, তাই আপনার ব্যর্থতা বর্ণনা করার জন্য আমি একটি ক্ষতির মধ্যে আছি।
আমার জন্য এই কাজ রেফ। https://stackoverflow.com/a/5408501/248616
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'YOUR_NAME';