বাদ পড়া এসএসএইচ সেশনগুলি সমাপ্ত করুন


47

আমার এসএসএইচ সেশনগুলি হ্রাস পাচ্ছে বলে মনে হচ্ছে যদিও এটি আমার বড় সমস্যা নয় - বড় সমস্যাটি হ'ল আমার আগের সেশনগুলি এখনও বেঁচে আছে, আরও খারাপ তবুও তাদের মধ্যে একটি visudoআমাকে এটি অ্যাক্সেস করতে বাধা দিচ্ছে!

who আমার সংযোগ বিচ্ছিন্ন হওয়া আমার বর্তমান ব্যতীত আরও অনেকগুলি সেশন দেখায়, কীভাবে আমি পুরানোগুলি বাতিল করতে পারি যাতে তাদের সংস্থানগুলি ছেড়ে দেওয়া যায়?


1
আপনি যদি কোনও নির্দিষ্ট টার্মিনালে সমস্ত কিছু খুন করে ঠিকঠাক fuser -k /dev/pts/0হয়ে থাকেন তবে whoআউটপুটে টার্মিনালের মতো কিছু বা কিছু প্রদর্শিত হতে পারে । যদিও SIGHUP এড়ানো হয়েছে তাদের মধ্যে কিছুটা অদ্ভুত। তারা একটি screenঅধিবেশন চলছিল বা কিছু?
ব্র্যাচলে 13

আমি পেয়েছি: 1031 প্রক্রিয়াটি হত্যা করা যায়নি: এরকম কোনও প্রক্রিয়া নেই। কেবল পুটি ব্যবহারের ক্ষেত্রে এসএসএইচ'এই বিশেষ কিছু নয় - আমি মনে করি যে আমার নতুন রাউটারটি নিষ্ক্রিয় সংযোগগুলি ফেলে দেওয়ার জন্য আগ্রাসী - যদিও আমি ভাবতাম যে অন্য প্রান্তটি টিসিপি সংযোগটি শেষ হয়ে গেলে - সম্ভবত এটি জানেন না (এখনও)?
মার্কমনল

1
কমান্ডটি অন্যান্য ব্যবহারকারীর জন্য কাজ করছে আপডেট করুন (0 টি whoআর নেই), ধন্যবাদ!
চিহ্নম্নল

"যদিও আমার এসএসএইচ সেশনগুলি হ্রাস পাচ্ছে বলে মনে হচ্ছে ... প্রধান সমস্যাটি আমার আগের সেশনগুলি এখনও বেঁচে আছে" কিছুটা পরস্পরবিরোধী। তারা হয় সংযোগ বিচ্ছিন্ন হয়েছে, বা তারা এখনও সংযুক্ত আছে। আপনি কীভাবে এই সিদ্ধান্তে পৌঁছেছেন তা ব্যাখ্যা করা উচিত যেমন আপনার সংযোগ বিচ্ছিন্ন হয়ে গেছে তারপরে আবার সংযোগ করুন এবং বুঝতে পারবেন যে আপনার পুরানো সংযোগটি এখনও চলছে।
স্বর্ণলোকস

উত্তর:


58

তাত্ক্ষণিক সমস্যা সমাধানের জন্য, sudoers ফাইলটি লক করা আছে, আপনি কেবল লক ফাইলটি মুছতে পারেন। এটি সাধারণত `/etc/sudoers.tmp" হবে; ভিসুডো যাচাই করার জন্য ম্যান পৃষ্ঠাটি পরীক্ষা করুন you আপনি যদি লক ফাইলটি মোছা করেন তবে আপনি আবার ভিজুডো চালাতে পারেন।

এখনও ঝুলন্ত অবস্থায় থাকা সমস্ত সেশনগুলি মুছতে, প্রথমে আপনার নিজের বর্তমান সেশনের পিডটি সন্ধান করুন। তারপরে, আপনার নিজের পিডটি যদি 12345 হয়, তবে করুন

ps -ef | grep sshd | grep -v root | grep -v 12345 | grep -v grep | awk '{print "sudo kill -9", $2}' |sh 

আপনি | shহত্যার পরিকল্পনা করছেন এমন পিআইডি চেক করার জন্য আপনি চূড়ান্ত প্রথমটি ছাড়াই এটি করতে চাইতে পারেন ।

আপনি যদি লিনাক্সে থাকেন তবে আপনি পরিবর্তে এটি ব্যবহার করতে পারেন

pkill -o -u YOURUSERNAME sshd

আপনার প্রাচীনতম এসএসএইচ সেশনটি হত্যা করার জন্য। আপনার বর্তমান অধিবেশন একমাত্র বাকি না হওয়া অবধি এটি চালিয়ে যান।

এছাড়াও আপনি সেট করতে চান পারে ServerAliveInterval 15আপনার .ssh/configএকটি keepalive বার্তা পাঠাতে প্রতি 15 সেকেন্ডে যখন কোন তথ্য পাঠানো হয়েছে। man ssh_configআরও তথ্যের জন্য.


1
CentOS- এ আপনি যদি রুট অ্যাকাউন্টে এসএসএইচ করছেন তবে এই উত্তরটি কার্যকর হবে না, নিম্নলিখিতটি ব্যবহার করে দেখুন: পিএস অক্স | গ্রেপ এসএসএস | গ্রেপ-ভি / ইউএসআর / এসবিন | awk '{মুদ্রণ $ 2}' | xargs হত্যা
আলী নাদালিজাদেহ

ধন্যবাদ। এইটা কাজ করে. grep -v 12345সিনট্যাক্সের অংশটি কী উদ্দেশ্যে কাজ করে তা সম্পর্কে আমি অস্পষ্ট ? যে সব থাকে না পাস 12345?
লর্ড লোহ

grep -v 12345মানে " 12345ম্যাচ থেকে যেকোন লাইন ম্যাচ সরিয়ে ফেলুন " সুতরাং, আপনার প্রথমে আপনার নিজের সেশনের পিআইডি সনাক্ত করতে হবে এবং পরিবর্তে সেই পিআইডি ব্যবহার করা উচিত 12345
জেনি ডি

এই জাতীয় সমস্ত অধিবেশন হত্যা এবং পদত্যাগ করার পরে, আদেশ whoবা topএখনও স্বাক্ষরিত ব্যবহারকারীদের পুরানো সংখ্যা দেখায়, এমনকি এটি কেবলমাত্র 1 টি প্রদর্শিত হবে show কীভাবে তা সতেজ হওয়াতে বাধ্য করা যেতে পারে?
gaমেগা

2

আপনি যদি প্রক্রিয়াগুলি তালিকাভুক্ত করেন যাতে আপনি তাদের কমান্ড এবং আর্গুমেন্টগুলি দেখতে পান (যেমন উদাহরণস্বরূপ ps -fপ্রোপসগুলি থেকে), আপনাকে sshd প্রসেসগুলি দেখতে হবে উদাহরণস্বরূপ:

sshd: user@pts/7

টার্মিনাল ( pts/7) এখানে মূল অংশ - আপনি যদি এটি আপনার বর্তমান টার্মিনাল ( tty) এর সাথে তুলনা করেন তবে আপনি দেখতে পাবেন যে আপনার সক্রিয় অধিবেশনটি কোনটি। এটি করার অন্যান্য উপায় অবশ্যই রয়েছে (যেমন বর্তমানে চলমান শেলের পিআইডি তাকানো এবং প্রক্রিয়া গাছের মধ্যে এটি সনাক্ত করা) তবে এটি সম্ভবত সবচেয়ে সহজ উপায়। তারপরে আপনি এই লাইনগুলি বরাবর কিছু ব্যবহার করতে পারেন:

# current tty name
TTY=$(tty | cut -f3- -d/)
# PIDs of other sshd processes
ps -o pid= -o command= -C sshd \
    | grep sshd:.*@ \
    | grep -v "@$TTY" \
    | sed "s/ sshd.*//"

তারপরে আপনি পিআইডিগুলিকে মারার জন্য খাওয়াতে পারেন xargsতবে সর্বদা নিশ্চিত হন যে আপনি sshdনতুন প্রক্রিয়াগুলি পরিচালনা করে এমন মূল প্রক্রিয়াটি আপনাকে হত্যা করবেন না

সম্পর্কিত নোটে, পরামর্শ দিন যে psআউটপুট ফর্ম্যাটগুলির পরিবর্তনের কারণে এখানে সাধারণত পার্সিং আউটপুটটি ত্রুটি-প্রবণ (বিশেষত বিভিন্ন সিস্টেম জুড়ে) হয় (এটি ব্যবহারের ফলে এখানে বিশাল পরিমাণে প্রশমিত হয় -o pid= -o command=)।


1

এটি 2+ দিনের জন্য ঝুলন্ত সেশনগুলিকে হত্যা করবে। এটি একটি ক্রোন হিসাবে রাখা যেতে পারে।

for i in `w|awk '{print $2,$5}'|grep days|cut -d' ' -f1`; do fuser -k /dev/$i; done

এটি আপনার (শেষ সক্রিয় অধিবেশন) ব্যতীত অন্য সকলকে হত্যা করবে। টার্মিনাল থেকে এটি চালান।

for i in `w|tail -n+3|awk '{print $2,$5}'|grep -v 0.00s|cut -d' ' -f1`; do fuser -k /dev/$i; done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.