একটি সিস্টেমে বর্তমান টিসিপি সংযোগ গণনা করা


22

না করার পরিবর্তে wc -l /proc/net/tcp, এটি করার কোনও দ্রুত উপায় আছে?

আমার কেবলমাত্র টিসিপি সংযোগের মোট গণনা দরকার।


5
সম্ভবত চেষ্টা করুনss -s
উলিরিচ ড্যাঞ্জেল

@ অলিরিচডাঙ্গেল শীতল, সোকস্ট্যাট পড়ে তাড়াতাড়ি; আপনি আসলে এটি উত্তর অঞ্চলে রাখতে পারেন ;-)
ডেইজি

উত্তর:


20

আপনি যদি কেবল নম্বর পেতে চান এবং কোনও বিবরণ প্রয়োজন না হয় তবে আপনি সেখান থেকে তথ্যটি পড়তে পারেন /proc/net/sockstat{,6}। দয়া করে মনে রাখবেন যে সংযোগগুলির নিখুঁত গণনা পেতে আপনাকে উভয় মানকে একত্রিত করতে হবে।

যদি আপনি কার্নেল থেকে নিজেই তথ্য পেতে চান তবে আপনি NETLINK_INET_DIAGএটি না পড়ে কার্নেল থেকে তথ্য পেতে ব্যবহার করতে পারেন /proc


1
উপরের প্রস্তাবিত সমাধান বনাম আমার সমাধানের পারফরম্যান্সের তুলনায় অনেক সংযোগের সাথে এমন একটি সিস্টেমে একটি পরীক্ষা দেখতে আমি কৌতূহলী হতে চাই যার চূড়ান্ত উত্তর পেতে অতিরিক্ত পাটিগণিত এবং ফিল্টারিং প্রয়োজন, যা কেবল একটি একক সংখ্যা!
জোহান

7

একটি দ্রুততর উপায়? এইভাবে একটি সেকেন্ডের ভগ্নাংশে একটি উত্তর তৈরি হয়, আসলে এটি আমার কম্পিউটারে 0.009 সেকেন্ড সময় নেয়!

আপনি কি এমন কোনও উপায় খুঁজছেন যাতে কম টাইপিংয়ের প্রয়োজন হয়? সেক্ষেত্রে একটি উপাধি নির্ধারণ করুন, যেমন

alias tcpcount="wc -l /proc/net/tcp"

আপনি এখন কেবল নামটির নাম লিখতে পারেন, যেমন tcpcountএই নাম্বারটি পেতে আমি আমার উদাহরণে ব্যবহার করেছি।

লাইনটি প্রবেশ করান বা আপনার .bashrc এ যুক্ত করুন যাতে প্রতিবার আপনি লগ ইন করলে উপনামটি সংজ্ঞায়িত হয়ে যায়।

বিপুল সংখ্যক সংযোগের জন্য, নিম্নলিখিতগুলি সম্ভবত কিছুটা দ্রুত চালাতে পারে (এবং খুব সংখ্যক সংযোগের জন্য কিছুটা ধীর):

#!/bin/bash
/usr/bin/tail -1 /proc/net/tcp | (IFS=:
read COUNT DISCARD
echo $COUNT
)

অথবা হতে পারে ...

awk 'END {print NR}' /proc/net/tcp

এই উভয় সমাধানই ধরে নেয় যে "ডাব্লুসি" কেবলমাত্র রেখার সংখ্যা গণনা করার জন্য খুব অনুকূল নয়। আমার পরীক্ষাটি দেখায় যে এই অনুমানটি সত্য।

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


1
আমার 40k + সংযোগ রয়েছে যেখানে এটি 3 সেকেন্ডের বেশি সময় নেয়
ডেইজি

2
হুম, আমি পড়ার পরে আরও দ্রুততর কোনও উপায় নেই বলে আমি মনে করি না /proc/net/tcp। আপনি চেষ্টা করতে পারেন netstat -n -t | wc -l, তবে আমার অনুমান যে নেটস্ট্যাটটিও /proc/net/tcp
পড়েছিল

নেটস্ট্যাট আমার সিস্টেমে / প্রোক / নেট / টিসিপি পড়ার চেয়ে 3 গুণ বেশি ধীর, তবে এটি সংখ্যার খুব কম সংখ্যক সংখ্যার সাথেই রয়েছে, তাই সংযোগের সংখ্যাটি বড় হলে কিছু স্টার্টআপ ওভারহেড প্রশমিত হতে পারে। নেটস্ট্যাট বিভিন্ন রাজ্যে সংযোগের সংখ্যা পাওয়া সহজ করে তোলে ....
জোহান

1
১ GB গিগাবাইট র‌্যামযুক্ত সার্ভারে netstat -ntপ্রায় 180.000 সংযোগ সহ এটি করতে এখন এক মিনিটেরও বেশি সময় লাগে takes এটি এত ধীরে ধীরে হওয়ার কোনও কারণ আমি দেখছি না ... (পড়ার /proc/net/tcpবিষয়টিও খুব ধীর)
Marki555

1
180k সংযোগ সহ একটি মেশিনে কিছু লজ্জাজনক পরীক্ষা নির্দেশ দেয় যে awkপদ্ধতির চেয়ে ভীতিজনকভাবে ধীর wctailসমাবস্থা উপর মনে করা হয় wc
ফেলিক্স ফ্রাঙ্ক

-1

ss -sবিস্তারিত উত্তর পেতে কমান্ডটি ব্যবহার করুন ।

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