Linux サーバーの状態を監視する方法

Linux サーバーの状態を監視する方法

私たち、特に Linux エンジニアは毎日 Linux サーバーを扱っています。サーバーのセキュリティとパフォーマンスを確保するために、作業がスムーズに進むようにサーバーの状態を監視する必要があることがよくあります。

この記事で紹介したいくつかのコマンドは、サーバーの監視だけでなく、日常の開発にも適しています。

1. 見る

watch コマンドは頻繁に使用されます。その基本的な機能は、特定の命令を指定された頻度で繰り返し実行することです。このコマンドを使用すると、いくつかのコマンドを繰り返し呼び出して、サーバーを監視するという目的を達成できます。

デフォルトでは、watch コマンドは 2 秒ごとに実行されますが、 -nオプションを使用して頻度を指定できます。たとえば、date コマンドを 5 秒ごとに実行する場合は、次のようにします。

$ watch -n 5 日付

1 台のサーバーを多くの人、特に部門内の同僚が使用する必要があります。これらの友人が状況を利用しようとしているかどうかを確認するには、いくつかのコマンドを使用して監視することができます。

10 秒ごとに who コマンドを実行して、サーバーを使用しているユーザーを確認できます。

$ ウォッチ -n 10 誰
10.0秒ごと: who butterfly: 2019年1月23日火曜日 16:02:03

:0 2019-01-23 09:45 (:0)
ドリー pts/0 2019-01-23 15:50 (192.168.0.5)
アルビン pts/1 2019-01-23 16:01 (192.168.0.15)
サメ pts/3 2019-01-23 11:11 (192.168.0.27)

システムの実行速度が非常に遅いことがわかった場合は、uptime コマンドを呼び出して平均システム負荷を表示できます。

$ 稼働時間を見る
2.0秒ごと: uptime butterfly: 2019年1月23日火曜日 16:25:48

 16:25:48 22 日間稼働、4:38、ユーザー 3 人、負荷平均: 1.15、0.89、1.02

いくつかの重要なプロセスは失敗してはなりません。そうしないと、業務運営に影響する可能性があります。そのため、サーバー内のすべてのプロセスの数を繰り返しカウントすることができます。

$ ウォッチ -n 5 'ps -ef | wc -l'
5.0 秒ごと: ps -ef | wc -l butterfly: 2019 年 1 月 23 日火曜日 16:11:54

245

サーバーのメモリ使用量を動的に知るには、free コマンドを繰り返し実行します。

$ ウォッチ -n 5 無料 -m
5.0秒ごと: free -m butterfly: 2019年1月23日火曜日 16:34:09

  使用可能な使用済み空き共有バフ/キャッシュの合計
会員番号: 5959 776 3276 12 1906 4878
スワップ: 2047 0 2047

もちろん、これだけではありません。多くのコマンドを繰り返し呼び出して、サーバーのいくつかの重要なパラメータを監視することもできます。

2. トップ

top コマンドを使用すると、システムの多くの重要なパラメータを知ることができ、それらは動的に更新されます。デフォルトでは、top はシステム全体の状態を監視します。特定のユーザーの使用状況のみを知りたい場合は、 -uオプションを使用してそのユーザーを指定できます。

$ トップ -u アルビン
トップ - 16:14:33 2 日間稼働、4:27、ユーザー 3 人、負荷平均: 0.00、0.01、0.02
タスク: 合計 199、実行中 1、スリープ中 198、停止中 0、ゾンビ 0
%CPU: 0.0 us、0.2 sy、0.0 ni、99.8 id、0.0 wa、0.0 hi、0.0 si、0.0 st
MiB メモリ: 合計 5959.4、空き 3277.3、使用中 776.4、バッファ/キャッシュ 1905.8
MiB スワップ: 合計 2048.0、空き 2048.0、使用済み 0.0。使用可能なメモリ 4878.4

 PID ユーザー PR NI 仮想リソース SHR S %CPU %MEM 時間+ コマンド
23026 アルビン 20 0 46340 7820 6504 S 0.0 0.1 0:00.05 システムd
23033 アルビン 20 0 149660 3140 72 S 0.0 0.1 0:00.00 (sd-pam)
23125 アルビン 20 0 63396 5100 4092 S 0.0 0.1 0:00.00 sshd
23128 アルビン 20 0 16836 5636 4284 S 0.0 0.1 0:00.03 zsh

この結果では、ユーザー alvin によって実行されたすべてのプロセスの数だけでなく、各プロセスによって消費されたシステム リソース (CPU、メモリ) も確認でき、システム全体の主要なパラメータも確認できます。

3. 交流

サーバーにログインした各ユーザーが要した時間を知りたい場合は、ac コマンドを使用できます。このコマンドを使用するには、 acctパッケージ (Debian) またはpsacctパッケージ (RHEL、Centos) をインストールする必要があります。

すべてのユーザーがサーバーにログインするのにかかった合計時間を知りたい場合は、パラメータなしで ac コマンドを直接実行できます。

$ ac
合計 1261.72

各ユーザーが使用した時間を知りたい場合は、 -pオプションを追加できます。

$ ac -p
 サメ 5.24
 アルヴィン 5.52
 1251.00 シュシュ
 合計 1261.76

-dオプションを追加して、各日にユーザーが使用したサーバーの合計時間を表示することもできます。

$ ac -d | テール -10
1月11日 合計 0.05
1月12日 合計 1.36
1月13日 合計 16.39
1月15日 合計 55.33
1月16日 合計 38.02
1月17日 合計 28.51
1月19日 合計 48.66
1月20日合計1.37
1月22日合計23.48
今日の合計 9.83

まとめ

システムの実行状態を監視するには、さまざまなコマンドを使用できます。この記事では、主に 3 つのコマンドを紹介します。watch コマンドを使用すると、コマンドを繰り返し実行していくつかのパラメータの変更を監視できます。top コマンドを使用すると、ユーザーが実行したプロセスの数と消費されたリソースを表示できます。ac コマンドを使用すると、各ユーザーが使用したサーバー時間を表示できます。

Linux サーバーの状態を監視する方法についてはこれで終わりです。Linux サーバーの状態の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linux でリモート サーバー ファイルの状態を表示する方法
  • Linux サーバーのステータスとパフォーマンスに関連するコマンドの詳細な説明
  • Linuxサーバのハードウェア動作状況や障害メール通知の監視スクリプトの共有
  • Linuxサーバーのステータスを取得するためのPHPコードを共有する

<<:  VueはBaidu Mapsを使用して都市の位置特定を実現

>>:  MySQL で union all を使用してユニオンソートを取得する方法

推薦する

Tomcat が IDEA のコンソールで文字化けを起こし、IDEA エンコーディングを UTF-8 に設定する方法

1. まず、TomcatログのエンコーディングとIdeaログ表示コンソールのエンコーディングを区別す...

Docker execは複数のコマンドを実行します

docker exec コマンドは、実行中のコンテナ内でコマンドを実行できます。 docker ex...

Vueはチャットインターフェースを実装する

この記事の例では、チャットインターフェースの表示を実現するためのVueの具体的なコードを参考までに共...

MySQL ステートメントを使用して、さまざまな整数が占めるバイト数とその最大値と最小値を調べる例

直接コード: タイプとして「bigint unsigned」、バイトとして「8」、max_numとし...

HTML+CSS+JavaScript でシンプルな三目並べゲームを作成する

目次HTMLの実装CSSを追加Javascript部分の実装デモアドレス HTMLの実装まず、hea...

テキストエリアの disabled 属性と readonly 属性の具体的な使用法

障害者の定義と使用法disabled 属性はブール属性です。 disabled 属性は、テキスト領域...

CentOS7でルートパスワードをリセットする方法

レンガを移動するプロセスでは、さまざまな環境および構成の問題があり、毎回異なるエラーが発生します。 ...

Java で ffmpeg を呼び出してビデオ形式を flv に変換する方法の詳細な説明

Java で ffmpeg を呼び出してビデオ形式を flv に変換する方法の詳細な説明注:以下のプ...

MySQLグループクエリ最適化方法

MySQL はほとんどの場合、GROUP BY クエリと DISTINCT クエリを同様に処理します...

MySQL で特定の日、月、または年のデータをクエリするためのコードの詳細な説明

今日 テーブル名から * を選択します。ここで、to_days(時間フィールド名) = to_day...

水平プログレスバーの最後にテキストを表示するための実装コードの CSS 記述

問題の説明仕事で以下の成果を達成したいと考えています。 解決div タグに相対配置を追加し、絶対配置...

LinuxベースのApacheウェブサイトサービス構成の詳細な説明

オープンソース ソフトウェアである Apache は、最も広く使用されている Web アプリケーショ...

JavaScript でドラッグ可能なプログレスバーを実装する

この記事では、ドラッグ可能なプログレスバーを実装するためのJavaScriptの具体的なコードを参考...

JS配列インデックス検出におけるデータ型の問題の詳細な説明

WeChat アプレット プロジェクトを書いていたとき、その中に「都市選択」機能がありました。作者は...

MySQL 8.0 ウィンドウ関数の紹介と概要

序文MySQL 8.0 より前は、Oracle、SQL SERVER、PostgreSQL などの他...