シニアプログラマーの概要:6つのメソッドのLinuxプロセスの分析、私はすべてを教えてくれ

ソース |バックエンド技術学校

カバー写真| CSDNは、視覚的な中国をダウンロード

オペレーティングシステム「プロセス」は、それらの純粋に理論的な下さておき、オペレーティング・システムに問い合わせてくださいコンピュータサイエンスの基本的な概念であり、プログラムは問題を実行するたびに、我々は、各プロセスの段階の分析でステップしなければならないので、多くの年のためのLinuxでのソフトウェア開発を行って、層の実装状態は、問題がどこにあるか、Linux環境の実用的な操作であなたとこのレモンは、ステップバイステップでは、これらの秘密の「Linuxプロセス」発見探求するトラブルシューティングを行います。

プロセスとは何ですか

まず、私たちは「プログラム」のコンセプトの下、プログラムがディスク上に格納された命令の順序付きコレクションであると言う、静的です。プロセスは、リソース管理プログラムの最小単位であり、動的に作成、スケジューリング、およびプロセス全体の崩壊を含む、プログラムを実行する処理です。

スレッドは、計算をスケジュールすることができ、オペレーティング・システムの動作の最小単位です。ほとんどの場合、それがプロセスに含まれ、単位プロセスの実際の動作は、プロセスが複数のスレッドを含むことができ、リソーススケジューリングの最小単位です。[ウィキペディアを引用]

マルチスレッドプログラミングモデル

お問い合わせのプロセスの最初のステップ、あなたはありますか?大丈夫?

  • PS

現在のプロセスのスナップショットを報告します。リストは、現在のシステムプロセスのスナップショット。

PID(プロセスID)は、一意のpidプロセスを識別するプロセスを見つけます。Psが最初にすべての彼はPhotoshopのではない、白のユーザーのために、我々はすべてそれを知っている必要があり、このコマンドを使用します。

PS -efのように、通常、関心のパイプはgrepプロセスで、一般的な使用は、多くの場合、PS -ef情報システムにリストされている、あなたの簡単な紹介を与える|最初の列をintrestingのgrepのプロセスID PID、PPID(親を表し親プロセスIDの代わりにプロセスID)。

プロセスを探索する第二のステップは、私はあなたが友人(システムコール&信号)を支払わなければならないものを見てみましょう

  • straceの

追跡プロセス内のシステムコールと信号トレースシステムコールとシグナル。

「システムコール」とは何ですか?システムコール(システムコール)は、「カーネルモード」サービスを実行するために、より高い権限を必要とオペレーティングシステムに「ユーザーモード」プログラムの要求で実行いう、システムはプログラムがユーザーとオペレーティングシステム間のインタフェースを提供します呼び出します。

straceのは、システムコールとシグナルプロセスの開始をトレースすることができ、プロセスを開始するために後ろに続く、このコマンドは、プロセスを見ることができます彼らはシステムコールの出力することができる時間が異なるオプションを使用して発生したシステムコールと呼ばれているときに実行が指定され、精度は正確にすることができマイクロ秒、さらには統計解析システム「通話時間がかかり、」捜査過程仮死の問題で、便利、あなたはどのシステムコールのカードのプロセスを見つけることができます。また、指定-pパラメータは、添付ファイルとしてトラックまでのpidアドオンを添付し、GDBのようなプロセスを実行してきたことができます。

straceの統計

第3のステップは、私が(スレッド)を使用して弟を見てみましょう、プロセスを探ることです。

  • pstackの

実行中のプログラム・スタックに関する情報をプリントアウトするために実行中のプロセスのスタックトレースを出力します。

実行pstackのは、あなたがPID psコマンドを取得するために使用することのできる前に、現在のスレッド実行中のスタックトレースを見ることができるのpid、pstackのは、それぞれ「スタック」コンテンツは、スレッドで見ることができ、プロセス内のスレッド数の開始を見ることができますへ。

ここでの知識の点であり、まだLWPの上に印刷を参照してください、LPWは軽量プロセスの軽量スレッドを意味します。拡張知識:

  1. Linuxは、実際のスレッドではありません

  2. Linuxはスレッドスレッドは、いわゆるシミュレーションを達成するためのプロセスであるされていません。軽量プロセス

  3. プロセスは、最小単位「エクスプローラ」であり、スレッドは、「リソーススケジューリング」最小単位(ここでは考慮していないコルーチン)

、その弟(スレッド)を探索するための第四段階のプロセスは、それからチームをランク付けしました。

  • pstreeは

印刷動作プロセス構造のツリー構造の処理pstreeコマンド情報のツリーを表示

あなたは、直感的なプロセス間の関係を見ることができる、それがスレッドを開始し、プロセスIDを表示することができます。

pstreeは

第五段階の問い合わせ処理は、(プロセスクラッシュ)死んでいる私はあなたの秘密(スタックフレーム&コンテキストを)知っている必要があります(プロセスを実行している)生きています。

  • GDB

GDBは、Linuxデバッグツールの下で開発されたGNUのgccのパッケージである、あなたがプログラムスタック、セットブレークポイント、印刷実行時の情報、さらにはマルチスレッドプログラムのデバッグを表示することができ、それは非常に強力です。

ここでは詳細GDBに行き過ぎの面でコマンドとしてgdbが、あなたは、短いここに記事の長さは、長い話をホールドアップ詳細に次の記事を、それを開くための機会を持つことができます。

  • 使用

プログラムは、最初の-gオプションを追加するには、このようにして生成したG ++ -gます。test.cpp -oテストプログラムがそれをデバッグするGDBを使用することができます使用GDBデバッグC / C ++コンパイラ。

  1. GDB PROG:直接プログラム、コマンドを起動し、GDBでデバッグすることができます

  2. プロセスに添付のgdbを使用すると、すでに開始デバッグをすることができます。コマンド:GDB PROG PID

  3. プログラムは、コアファイルでもGDBデバッグを使用できるパラメータをクラッシュした後、あなたが死ぬ前に、外観はプログラムに任意の最後の言葉(スタック情報)を残しました。コマンド:GDB PROGコアファイル、いくつかのLinuxシステムは、コアファイルのデフォルトのプログラムがクラッシュが発生しないことに注意することは一つのことは、あなたが-c無制限これはコアファイルが生成されますulimitをする必要があり、そこにあります。

私が知りたい、あなたのすべてについて、第六段階のプロセスを探検。

一歩近づきました

ときの情報と統計のプロセスを実行するための経由での/ proc / pidのファイル。/ procファイルシステムは、擬似システムは、ファイル・システムのカーネル・モードとの通信インタフェースを提供する過程で空間を占有することなく、専用メモリのうち、外部メモリを存在です。システム/ procディレクトリ:

procディレクトリ

/ procディレクトリという名前の多くのデジタルディレクトリがあり、それぞれの数字は、プロセス番号PIDディレクトリでプロセスを表します。システムは、現在、各プロセスでのディレクトリの/ proc / PIDのディレクトリ名としてプロセス番号を下の/ proc対応を実行しているとき、彼らは情報を処理するインターフェースを読んで、私たちは、プロセスの仕組みの知識内でこのファイルに入力することができます情報と統計。

  • 高周波利用

/ PIDの下にいくつかの重要なファイル/ディレクトリがあるPROC、頻繁に話に使用いくつかを選びます。一覧は/ proc / PID /環境は、利用可能な環境変数のプロセスが含まれています。あなたは、環境変数の設定を有効にするかどうかわからない場合は、問題をプログラムするには、確認するために、ファイルのうちの猫を見ることができます。

/ procの/ PID / FD /ディレクトリのプロセスのためにオープンすべてのファイルへのリンクが含まれています。ここからは、標準入力、出力、エラーストリームを含む、情報のプロセスのオープンファイル記述子を表示することができ、コマンドが同様の効果を持っているlsofを、開いているファイルディスクリプタのソケット接続のプロセスは、見ることができます。

の/ proc / PID / STATは、すべてのステータス情報、プロセスID、親プロセスID、スレッドグループ番号、時間、ユーザモード動作でタスク、カーネルモードの実行時間とタスク、コードセグメントの仮想アドレス空間を処理含ますべてを遮断するように、ビットマップの情報信号。

  • その他の統計

完全なコマンドは/ proc / PID / cmdlineをこのファイルには、プロセスライン保持
の/ proc / PID / CWDシンボリックリンクを、現在の作業ディレクトリのプロセスを指している
の/ proc / PID / exeファイル含むプログラムがで実行中のプロセスリンク
の/ proc / PIDを/ MEMは、メモリ内の処理内容が含まれている
の/ proc / PID / STATM含むプロセスのメモリ使用量情報

要約します

まあ、その背後にある食事、あなたの秘密のプロセスダウンの操作、あなたは何の問題(クラッシュコアダンプ、仮死状態、閉塞が発生した場合、私たちの良い友人は次の「プロセス」は、システムは、ファイルの説明、タイムアウトを呼び出し、非常に理解していますフー異常は)、あなたはそれに対処する方法を知っている必要があります!レッツ・要約したものです。

  • psのプロセスIDを参照して、プロセスを見て、プロセスが状態のままではありません

  • ケースstraceの、位置に固定されていない現在のプロセス情報、でpsstack外観は、外れ値を見つけるために、最後の呼び出し情報の各フレームを比較した場合

  • そこにコアファイルのファイルが直接GDBのコアファイルの情報を表示する場合、プロセスは、もは​​やされていない場合

  • 他の難病は、私たちがあなたにインスピレーションを与える可能性の/ proc / pidを以下のプロセスのステータス情報を見て、そのプロセスのステータス情報を疑いました。

  • 他のすべてが失敗した場合は最後に、我々は盲目の目の祈りを回します!

最後に書かれました

今日のシェアは、私は決して、決してコアダンプ、レッツは、操作上のグレー行くを食べることを教えていない、あなたがサービスを書き留めたい、あなたを助けたいです。各ありがとうございビット読みのを。記事のヘッドは、知識の理解を共有することで、技術的な記事すべては、最大の精度を確保するために、確認を繰り返すことになる明らかな欠陥がテキストで表示された場合に一緒に私たちが調査し学ぶことも歓迎しています。

同時に、「大きな開発者やAIの研究」、わずか2分の記入をスキャンFanger魏コードの下にあるすべての開発者に開放、あなたは299元の値を収穫することができ、「AIの開発者百万人大会」のライブオンラインチケット!

推荐阅读:“出道” 5 年采用率达 78%,Kubernetes 的成功秘诀是什么?
一群阿里人如何用 10 年自研洛神云网络平台?技术架构演进全揭秘!
一文告诉你,如何在 Kubernetes 的容器引擎中运行 KVM 和 VMware VM!半小时训练亿级规模知识图谱,亚马逊AI开源知识图谱嵌入表示框架DGL-KE马化腾、马云并列成为中国首富;百度回应“将上线电商直播”;.NET 5 Preview 2 发布 | 极客头条程序员职场背锅甩锅指南警惕!新骗术出现:这些虚假二维码生成器已成功盗取 4.6 万美元!真香,朕在看了!
公開された303元の記事 ウォンの賞賛1288 ビュー141万+

おすすめ

転載: blog.csdn.net/FL63Zv9Zou86950w/article/details/105383294