Tutoriel Linux

Linuxでの監視:コマンドを手動で再実行せずに追跡する

Débutant2 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

再起動します df -hss -s または systemctl --失敗 数秒ごとに値が変化するかどうかを確認します。 時計 このツールは、ターミナル上でこの監視を自動化します。一定間隔で同じコマンドを実行し、以前の表示を置き換え、変更点を強調表示することができます。

私はこれを、短時間の介入中にプロセス、ディスク容量の使用状況、またはサービスの状態を監視するために使用します。ただし、1点注意する必要があります。 時計 実際には、コマンドが繰り返されます。そのため、処理速度が遅い、コストがかかる、あるいは破壊的な命令は、停止するまで繰り返されます。

TuxはLinuxサーバーへの変更を定期的に監視します。
Watchは一定間隔でコマンドを繰り返し実行し、検出された変化を強調表示します。

その時計が入手可能かどうか確認してください

時計 パッケージの一部 プロップス または procps-ng ディストリビューションによって異なります。まず、その存在とバージョンを確認してください。

コマンド -v 監視
ウォッチ --バージョン
見る -- ヘルプ

コマンドが存在しない場合は、対応するパッケージをインストールしてください。

sudo apt install procps
sudo dnf install procps-ng
sudo pacman -S procps-ng

procps-ng のバージョンによっては、利用可能なオプションが若干異なる場合があります。詳細については、man ページを参照してください。 時計 これは、お使いのマシンにインストールされている動作を確認するための基準として残ります。

指定した間隔でコマンドを更新する

オプションがなければ、 時計 このコマンドは2秒ごとに再実行されます。この例では、マウントポイントのスペースを監視します。 /srv/data :

'df -h /srv/data' を監視

ヘッダーには、前回の更新間隔、コマンド、および時刻が表示されます。出力は処理ごとに置き換えられ、ログファイルのように画面に追加されることはありません。

使用 -n 間隔を秒単位で指定します。ここでは、コマンドは5秒ごとに繰り返されます。

watch -n 5 'df -h /srv/data'

コマンドのコストに合わせて頻度を調整してください。軽量なローカルカウンターには1秒が適しています。ネットワークリクエスト、API、低速ストレージ、または多数のファイルを反復処理するコマンドの場合は、5秒、10秒、または30秒を選択してください。まず、実行時間を確認してください。 時計 :

時刻 df -h /srv/data

オプション -p より正確なタイミングが求められます。指定した間隔よりも遅いコマンドと組み合わせないでください。バージョンによっては、失われた時間を取り戻すために実行を高速に連鎖させる場合があります。

変更点を視覚的に比較するのではなく、強調表示する。

オプション -d これは、連続する2つの表示間の差異を強調表示します。接続状況、処理キュー、システムカウンターなどを追跡するのに役立ちます。

watch -d -n 1 'ss -s'
watch -d -n 2 'ps -eo pid,pcpu,pmem,comm --sort=-pcpu | head -n 12'
watch -d -n 5 'systemctl --failed --no-legend'

CPU またはメモリ負荷の場合、 時計 焦点を絞ったビューを提供しますが、インタラクティブなナビゲーションはありません。 Linux での htop プロセスを並べ替えたり、列を変更したり、担当部署まで遡って追跡する必要がある場合は、こちらの方が適しています。

-g 使用方法を再度変更します。 時計 出力が変化するとすぐに停止します。これにより、端末の前に立ち続けることなく状態変化を待つことができます。

watch -g -n 2 'systemctl is-active nginx'

このコマンドは、返されたテキストが変更されると終了します。再起動する前に、完全なステータスとログを確認してください。

systemctl status nginx --no-pager
journalctl -u nginx -n 50 --no-pager

行動を起こす前にユニットの在庫を確認する必要がある場合は、専用のチュートリアルも参照してください。 systemctlとLinuxサービス

引用符、パイプ記号、および -x オプションについて理解する

デフォルトでは、 時計 に注文を送ります sh -cこれは、パイプ、リダイレクト、または複数の命令を使用する場合に便利です。コマンド全体をシングルクォーテーションで囲むことで、各イテレーションで起動されるシェルが完全な文字列を解釈します。

watch -n 2 'ps -eo pid,pcpu,pmem,comm --sort=-pmem | head -n 10'
watch -n 5 'date; df -h /srv/data'

これらのアポストロフィがない場合、チューブは現在お使いのシェルで処理できます。 時計 コマンドの一部しか受信されないため、結果は期待していたものとは一致しなくなります。

チューブや方向転換が必要ない場合、 -x プログラムを引数付きで直接実行します。この形式はエスケープシーケンスの問題を軽減します。

watch -n 2 -x df -h /srv/data

すべてのオプションを維持する 時計 コマンド名の前に指定してください。オプション処理は、オプションではない最初の引数で停止します。

ウォッチを破壊的なループに陥らせないでください

時計 再生コントロールに適しています: DF無料ss追記システム制御ステータス または健康状態に関する問い合わせに使用します。システムを変更するような操作と併用しないでください。

  • 繰り返さないでください rmchmodチャウン またはパーティショニングコマンド。
  • 置かないでください systemctl の再起動時計 : 各間隔でサービスを再起動する必要があります。
  • それについて考えるのを避ける 適切なアップデートバックアップ、またはデータベースに書き込むスクリプト。
  • リモートAPIの場合は、スロットリングや不要な負荷が発生しない間隔を選択してください。

読み取り専用の HTTP テストの場合は、この目的のために設計されたヘルス ルートを使用し、エラーが発生した場合は終了してください。 -e お使いのバージョンで利用可能であれば:

watch -e -n 10 'curl -fsS http://127.0.0.1:8080/health'

シェルループの型 真実ながら 同じ繰り返し処理は可能ですが、消去、遅延、エラー、停止などを管理する必要があります。 時計 一時的な観察には、この方法の方が簡潔です。継続的な監視には、監視ツール、systemdタイマー、または結果をログに記録するスクリプトを使用してください。

監視を中止し、ログ記録に適したツールを選択してください。

プレス Ctrl + C 止める 時計監視対象のプロセスは、次の更新までに完了する必要があります。コマンドが停止したままの場合は、シグナルを送信する前に、別のターミナルを開いてそのプロセスを特定してください。

pgrep -af watch
ps -o pid、ppid、stat、etime、cmd -p PID

新しい記事を受け取る新聞をフォローするには、 時計 訪問するたびに履歴を消去してください。 journalctl -f systemdユニットまたは 尻尾-F ログローテーションによって再作成可能なファイルの場合:

journalctl -u nginx -f
tail -F /var/log/nginx/error.log

へのガイド テールおよびライブログモニタリング この違いは詳細です。したがって、 時計 短いスナップショットを比較した後、イベントの順序が重要になった時点で、履歴を保持するツールに切り替えてください。

sudo apt update && sudo apt upgrade