序文 Linux サーバーを操作および管理するときに、最もよく使用されるコマンドの 1 つが netstat です。このコマンドは、現在のサーバー上のどのプロセスがポートをリッスンしているかを確認するためによく使用します。主に、ネットワーク サービスの動作状態を診断するために使用されます。 しかし、最近、新しい Ubuntu ディストリビューションをインストールしたときに、netstat がデフォルトでインストールされていないことに気付きました。これは非常に奇妙に感じたので、手動でインストールした後、man ページには netstat コマンドが非推奨になっており、代わりに ss コマンドを使用することが推奨されていることが示されていました。
netstatの使用法 netstat には非常に多くのパラメータがあります。私は通常、それらのパラメータを組み合わせて使用するので、後でこれらのパラメータを使用した理由を思い出せません。 ネットスタット -npl 結果は次のようになります: アクティブなインターネット接続(サーバーのみ) プロトコル 受信Q 送信Q ローカルアドレス 外部アドレス 状態 PID/プログラム名 tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 655/systemd-resolve tcp 0 0 0.0.0.0:22 0.0.0.0:* 890/sshdをリッスン tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 30790/cupsd tcp 0 0 0.0.0.0:18025 0.0.0.0:* LISTEN 890/sshd tcp6 0 0 :::22 :::* 890/sshdを聴く tcp6 0 0 ::1:631 :::* 30790/cupsdを聴く tcp6 0 0 :::9090 :::* 15415/./prometheus を聴く tcp6 0 0 :::18025 :::* 890/sshdを聴く udp 0 0 127.0.0.53:53 0.0.0.0:* 655/systemd-resolve udp 0 0 0.0.0.0:631 0.0.0.0:* 30792/cups-ブラウズ udp 0 0 0.0.0.0:5353 0.0.0.0:* 757/avahi-daemon: r udp 0 0 0.0.0.0:42360 0.0.0.0:* 757/avahi-daemon: r udp6 0 0 :::58232 :::* 757/avahiデーモン: r udp6 0 0 :::5353 :::* 757/avahiデーモン: r アクティブな UNIX ドメイン ソケット (サーバーのみ) Proto RefCnt フラグ タイプ 状態 I-Node PID/プログラム名 パス unix 2 [ ACC ] ストリームリスニング 35116 1304/gnome-session- @/tmp/.ICE-unix/1304 unix 2 [ ACC ] SEQPACKET LISTENING 1448 1/init /run/udev/control unix 2 [ ACC ] ストリームリスニング 34277 1270/systemd /run/user/1000/systemd/private unix 2 [ ACC ] ストリームリスニング 34282 1270/systemd /run/user/1000/gnupg/S.gpg-agent.ssh unix 2 [ ACC ] ストリームリスニング 33510 1270/systemd /run/user/1000/gnupg/S.gpg-agent unix 2 [ ACC ] ストリームリスニング 33511 1270/systemd /run/user/1000/pulse/native unix 2 [ ACC ] ストリームリスニング 33512 1270/systemd /run/user/1000/gnupg/S.gpg-agent.extra 最もよく使用されるコマンドの組み合わせはこれです。表示される結果には 2 つの段落があります。最初の段落には TCP/UDP プロトコルのリスニング ステータスが表示され、2 番目の段落には socks ファイルのリスニング ステータスが表示されます。パラメータ n は IP アドレスをデジタル形式で表示することを意味します。そうでない場合は、ホスト名またはドメイン名が表示されます。パラメータ p はプロセス名を表示することを意味します (表示されない場合もあります)。l の意味は、LISTENING 状態のソケットに焦点を合わせることです。 上記のコマンドを実行すると、システムで開いているソケットがすべて表示されます。ネットワーク サービスを開始したり、ポートを開くネットワーク サービスを開発したりする場合は、このコマンドを使用して開いたポートを確認できるはずです。表示されない場合は、ポートが正しく開かれていないことを意味します。理由を確認する必要があります。したがって、これは非常に便利なデバッグ コマンドです。 ssの使用法 上記は、netstat の最も基本的な使用方法を紹介したものです。もちろん、他にも多くの使用方法がありますが、今は省略します。netstat の代わりに ss コマンドを使用する場合、同様の効果を得るにはどうすればよいでしょうか。 ss-atlp これは私が自分で考え出したパラメータの組み合わせです。まだうまく暗唱できず、毎回ドキュメントを確認する必要があります。 状態 受信Q 送信Q ローカルアドレス:ポート ピアアドレス:ポート LISTEN 0 128 127.0.0.53%lo:domain 0.0.0.0:* ユーザー:(("systemd-resolve",pid=655,fd=13)) LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* ユーザー:(("sshd",pid=890,fd=5)) LISTEN 0 5 127.0.0.1:ipp 0.0.0.0:* ユーザー:(("cupsd",pid=30790,fd=7)) LISTEN 0 128 0.0.0.0:18025 0.0.0.0:* ユーザー:(("sshd",pid=890,fd=3)) LISTEN 0 128 [::]:ssh [::]:* ユーザー:(("sshd",pid=890,fd=6)) LISTEN 0 5 [::1]:ipp [::]:* ユーザー:(("cupsd",pid=30790,fd=6)) LISTEN 0 128 *:9090 *:* ユーザー:(("prometheus",pid=15415,fd=3)) LISTEN 0 128 [::]:18025 [::]:* ユーザー:(("sshd",pid=890,fd=4)) これは ss コマンドによって表示される結果です。形式は netstat とは大きく異なり、netstat コマンドほどコンパクトで直感的ではないことがわかります。これが多くの人々がこの命令を批判した理由の一つです。もちろん、この批判を批判する人たちは、人々は単に習慣に固執していて、前進する気がないのだと考えています。もちろん、こう言うのは間違っています。Charles を例に挙げましょう。私は 2010 年に仕事を始めたときに netstat コマンドを学びましたが、10 年近く使い続けており、一度も変更していません。もちろん、とても気に入っています。 もちろん、外国人がssコマンドの名前が良くないと言う理由もあります。実際、ssはソケット統計を意味する可能性があります。略語の後には2文字しかないため、関連付けが容易ではなく、netstatほど直感的ではありません。もちろんこれは私の説明に過ぎず、外国人が文句を言う理由にはなりません。彼らが文句を言うのは、SS と言えばヒトラーを思い出すからです。信じられないでしょう?私は1980年代に生まれました。私の世代の人には、このことについて何の印象もありません。重要なのは、私たちが主に中国語を話していることです。人々はSSを見ると、はしごを思い浮かべるでしょうが、ヒトラーを思い浮かべる人はいないでしょう。この偉大なナチスは、以前はSS特別機動部隊と呼ばれ、後に武装SSと改名された軍隊を持っていました。ドイツ語の略称はSSです。 では、早速いくつかのパラメータについて説明しましょう。a パラメータはすべてを表示することを意味し、t パラメータは TCP プロトコルを表示することを意味し、l は LISTENING 状態を表し、p はプロセス情報を表します。上記の表から、p パラメータによって出力される情報は、netstat ほど簡潔に整理されていないことがわかります。しかし、プロセス名、PID、FD が表示されるので、より完全です。しかし、二重括弧、キー/値の形式、引用符があるため、見た目が乱雑になります。もちろん、いくつかのコマンドを使用してフォーマットすることもできますが、それでも面倒です。 交換の理由は何ですか? おそらくこれが私が最も興味を持っていることです。しかし、ネットでいろいろ情報を検索してみましたが、基本的には曖昧なものでした。これもまた私を少し無力にさせます。 一般的に、メイン パッケージは net-tools パッケージであり、これが iproute パッケージに置き換えられることがわかります。理由はおそらく次のとおりです: 1. このパッケージは古すぎます。2. このパッケージは多くの新しいカーネル機能をサポートしていません (どの機能かは示されていません)。インターフェイスは十分に最適化されておらず、使いにくいです (コマンド ラインに適していません)。3. net-tools の ifconfig には多くの欠点があります。4. 今後は net-tools をメンテナンスしたくありません。
原理レベルからの分析もあります。現在の netstat コマンドと ifconfig コマンドはどちらも、/proc ディレクトリ内の仮想ファイルの読み取りと書き込みによってタスクを完了します。これは小規模ビジネス システムでは問題ありませんが、大規模システムではシステム パフォーマンスに悪影響を与える可能性があります。対照的に、 ss コマンドと ip コマンドは Linux カーネルの netlink ソケット機能を使用します。根本的な違いがあります。古いコマンドは新しい原則を使用して書き直すことができますが、主にさまざまなプログラマー グループ間の政治的な問題のため、実際にそうする人はいません。誰もが同意しません... もちろん、もっと深い理由があります。このようなデバッグ コマンドを使用するのは、本質的にカーネルの状態を知りたいからです。実際、カーネルはネットワーク モジュールの原理全体を変更しました。一方で、以前と同じように情報を表示するコマンドも必要です。表示レベルの形式は実際の原理から外れています。したがって、長期的には、これら 2 つのコマンドを置き換えることは避けられません。 結論は テクノロジーに携わる私たちも、時代の流れに遅れずについていく必要があります。以前のコマンドは馴染みがあり、使いやすく、忘れられないものですが、それでも新しいコマンドを学び続ける必要があります。多くのディストリビューションでは、net-tools パッケージがデフォルトで付属しなくなりました。手動でインストールすることはできますが、その理由は非常に明確です。一方、テクノロジーの分野で働くときは、頭が硬直しないように注意し、新しいものに対する好奇心と熱意を持ち続けなければなりません。 さて、今回の記事は以上です。この記事の内容が皆さんの勉強や仕事に少しでも参考になれば幸いです。123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: Vueコンポーネントが相互に値を転送する方法の詳細な説明
目次序文ブラウザコンパイル版ローカルプリコンパイルバージョン要約する序文vue3サンドボックスには主...
ウェブサイトのモバイル版には、少なくともいくつかの基本機能が必要です。 1. ページの適用性の問題:...
1. TypeScriptの紹介前回の記事ではTypeScriptのインストール、使い方、自動コンパ...
最近、ブログのアップグレードを始めました。テンプレートを変更する過程で、CSS スタイルシートを書き...
2.1、msiインストールパッケージ2.1.1、インストール特に重要なのは、インストール前に、元の ...
jQueryは劇場の座席選択と予約の効果を実現します。参考までに、具体的な内容は次のとおりです。効果...
Vue での img の動的スプライシングを見てみましょう。src 画像アドレス、具体的な内容は次の...
目次1. はじめに2回目の練習2.1 インストールと設定2.2 コアクラスの紹介2.3 使い方は? ...
会議中に同僚から開発ライブラリを書き込めないとの報告を受けました。エラー メッセージは次のとおりでし...
位置プロパティposition プロパティは、要素に使用する配置方法のタイプ (静的、相対的、固定、...
1. 「stripslashes($_POST['json']);」メソッドを使用し...
<br /> テキスト、記号、リンクの3つの側面に焦点を当て、主に中国語で、個人的な執筆...
1. はじめにこの記事では、Docker を使用して Redis を探索する方法を説明します。 Do...
バージョン1.4.2公式ドキュメントドッカーハブ起動する環境変数SEATA_CONFIG_NAMEを...
目次1. データ型1.1 なぜデータ型が必要なのか? 1.2 変数のデータ型1.3 データ型の分類2...