タグ付けされた質問 「process」

プロセスは、実行中のコンピュータプログラムのインスタンスです。

7
スレッドはLinuxのプロセスとして実装されていますか?
私は通過つもりだこの本マーク・ミッチェル、ジェフリー・オールダム、そしてアレックス・サミュエルことにより、高度なLinuxのプログラミング。2001年からですので、少し古いです。しかし、とにかくかなり良いと思います。 しかし、シェル出力でLinuxが生成するものとは異なる点に到達しました。92ページ(ビューアでは116ページ)の4.5 GNU / Linuxスレッド実装の章は、次の文を含む段落から始まります。 GNU / LinuxでのPOSIXスレッドの実装は、他の多くのUNIX系システムでのスレッド実装とは重要な点で異なります。GNU/ Linuxでは、スレッドはプロセスとして実装されます。 これは重要なポイントのようで、後でCコードで説明します。本の出力は次のとおりです。 main thread pid is 14608 child thread pid is 14610 そして、私のUbuntu 16.04では: main thread pid is 3615 child thread pid is 3615 ps 出力はこれをサポートします。 2001年から現在までに何かが変わったに違いないと思います。 次のページの次のサブセクション4.5.1シグナル処理は、前のステートメントに基づいています。 シグナルとスレッド間の相互作用の動作は、UNIXに似たシステムごとに異なります。GNU / Linuxでは、スレッドはプロセスとして実装されるという事実によって動作が決定されます。 そして、これはこの本の後半でさらに重要になるようです。誰かがここで何が起こっているのか説明できますか? 私はこれを見ましたLinuxカーネルスレッドは本当にカーネルプロセスですか?、しかしそれはあまり役に立ちません。よくわかりません。 これはCコードです: #include <pthread.h> #include <stdio.h> #include <unistd.h> void* thread_function …

5
親プロセスに送信されたときにSIGINTが子プロセスに伝播されないのはなぜですか?
シェルプロセス(例sh)とその子プロセス(例cat)が与えられた場合、シェルのプロセスIDを使用してCtrl+ の動作をどのようにシミュレートできCますか? これは私が試したものです: 実行shしてからcat: [user@host ~]$ sh sh-4.3$ cat test test 送信SIGINTにcat別の端末から: [user@host ~]$ kill -SIGINT $PID_OF_CAT cat 信号を受信して​​終了しました(予想どおり)。 親プロセスにシグナルを送信しても機能しないようです。親プロセスに送信されたcatときに信号が伝播されないのはなぜshですか? これは動作しません: [user@host ~]$ kill -SIGINT $PID_OF_SH
62 shell  process  signals 

2
プロセスを囲む括弧は何を意味しますか?
$ ps -Awwo pid,comm,args PID COMMAND COMMAND 1 init /sbin/init 2 kthreadd [kthreadd] 3 ksoftirqd/0 [ksoftirqd/0] 5 kworker/u:0 [kworker/u:0] 6 migration/0 [migration/0] 7 cpuset [cpuset] 8 khelper [khelper] 9 netns [netns] 10 sync_supers [sync_supers] 11 bdi-default [bdi-default] 12 kintegrityd [kintegrityd] 13 kblockd [kblockd] 14 kacpid [kacpid] 15 kacpi_notify [kacpi_notify] 16 …
62 process  ps 


2
常駐セットサイズ/仮想サイズの説明が必要
pidstatプロセスを監視するための優れたツールになると思いました。特定のプロセスの平均メモリ使用量を計算したい。出力例を次に示します。 02:34:36 PM PID minflt/s majflt/s VSZ RSS %MEM Command 02:34:37 PM 7276 2.00 0.00 349212 210176 7.14 scalpel (これはからの出力の一部ですpidstat -r -p 7276。) 常駐セットサイズ(RSS)または仮想サイズ(VSZ)情報を使用して平均メモリ消費量を計算する必要がありますか?私はウィキペディアとフォーラムでいくつかのことを読みましたが、違いを完全に理解できるかどうかはわかりません。さらに、それらのどれも信頼できるものではないようです。それでは、どのようにプロセスを監視してメモリ使用量を取得できますか? この問題に関するヘルプは役に立ちます。
61 linux  process  memory 


3
単一行のbashループで&(アンパサンド)を使用する
私はこのコマンドを正常に使用しています。このコマンドは、構成ファイル内の変数を変更し、ループ内でPythonスクリプトを実行します。 for((i=114;i<=255;i+=1)); do echo $i > numbers.txt;python DoMyScript.py; done それぞれDoMyScript.pyが終了する前に実行するのに約30秒かかるので、次のものをスポーンできるようにしながら、それらをバックグラウンドに委ねたいと思います。 以下のようにアンパサンドを追加することで、私がよく知っていることを試しました for((i=114;i<=255;i+=1)); do echo $i > numbers.txt;python DoMyScript.py &; done ただし、これにより以下のエラーが発生します。 -bash:予期しないトークン `; 'の近くの構文エラー

5
solarisで、切り捨てられた行なしで完全なプロセスリストを取得するにはどうすればよいですか?
solarisに完全なプロセスリストを生成する方法はありますか?ps次の引数を使用してコマンドを試しました。 -f完全なリストを生成します。(以下を参照 完全なリストの列の重要性 ing。) -l長いリストを生成します。(下記参照。) だから、それらは両方とも私が望むことをするようですが、ps manページのさらに下に、私はこれを見つけます: argsすべての引数を含むコマンド 文字列。実装は切り捨てられる場合があります この値をフィールド幅に。それは 実装依存 さらに切り捨てが発生します。それは 文字列かどうかは指定されていません 表現は引数のバージョンです コマンドに渡されたリスト 開始時、またはのバージョン 引数が変更された可能性があるため アプリケーションによって。アプリケーションはできません それらを変更できることに依存しています 引数リストとその修正 psの出力に反映されます。 Solarisの実装により、 80バイトの文字列。文字列は 引数リストのバージョン 開始時にコマンドに渡されます。 これは基本的に、出力が切り捨てられることを意味し、私がそれに対してできることは何もありません。だから、私はここに来ています。確かに他の人々がこの問題にぶつかり、おそらくそれを回避する方法さえあります。私はpsがそれを行うことができないと推測しているので、これを行うには他のツールを使用する必要があります。それは正確ですか?
57 process  solaris  ps 


3
フォークボムでシステムをクラッシュできないのはなぜですか?
最近、GNU / Linuxのプロセスに関する情報を掘り下げて、悪名高いfork bombに出会いました。 :(){ : | :& }; : 理論的には、システムがリソースを使い果たすまで無限に複製することになっています... ただし、CLI DebianとGUI Mintディストリビューションの両方でテストしてみましたが、システムに大きな影響は与えないようです。はい、大量のプロセスが作成されます。しばらくすると、次のようなコンソールメッセージを読みました。 bash:fork:リソースは一時的に利用できません bash:fork:retry:子プロセスはありません しかし、しばらくすると、すべてのプロセスが強制終了され、すべてが正常に戻ります。ulimitがユーザーごとのプロセスの最大量を設定したことを読んだことがありますが、それを実際に上げることはできないようです。 フォークボムに対するシステム保護とは何ですか?すべてがフリーズするか、少なくとも大幅に遅れるまで、なぜ自己複製しないのですか?フォークボムでシステムを本当にクラッシュさせる方法はありますか?
54 linux  process  fork  ulimit 

7
このUnixソケットペアのもう一方の端は誰ですか?
UNIXソケットのもう一方の端があるプロセスを判別したい。 具体的には、で作成されたものについて尋ねてsocketpair()いますが、問題はどのUNIXソケットでも同じです。 、およびparentを作成するプログラムがあります。親プロセスは閉じて、通信を続けます。子供は反対のことをします。次に、子は別のプログラムを実行します。2人は、このソケットペアを介して相互に通信できます。socketpair(AF_UNIX, SOCK_STREAM, 0, fds)fork()fds[1]fds[0]close(fds[0]); s=fds[1]exec()child1 さて、私は誰parentが知っているとしましょうが、私は誰が誰かを知りたいと思いchild1ます。どうすればいいですか? 私が自由に使えるツールはいくつかありますが、どのプロセスがソケットの反対側にあるのかを知ることはできません。私が試してみました: lsof -c progname lsof -c parent -c child1 ls -l /proc/$(pidof server)/fd cat /proc/net/unix 基本的に、2つのソケットとそれらに関するすべてを見ることができますが、それらが接続されていることはわかりません。親のどのFDがどの子プロセスと通信しているかを判断しようとしています。

4
再起動後の継続のためにプロセス全体を保存する
私は数学でかなり難しい問題のためのアルゴリズムを開発しました。リソースが限られているため、Ubuntu 12.04(x86)ラップトップでこれを開始しました。ここで、いくつかの更新プログラムをインストールし、実際にラップトップを再起動します(「再起動してください」というメッセージは煩わしいだけです)。 再起動後も継続できるように、割り当てられたメモリを含むプロセス全体を保存する方法はありますか? 必要なプロセスに関する情報を次に示します。必要に応じて、詳細情報をお気軽にお問い合わせください。 コマンド " ./binary > ./somefile &"または "time ./binary> ./somefile&" を使用して端末でプロセスを呼び出しましたが、実際には思い出せません。 いくつかのデバッグ情報をstd :: cerrに出力しています(あまり頻繁ではありません)。 現在約600.0 kiBを使用していますが、これは増加しますが、急速に増加する可能性は低いです。 プロセスは通常の優先度で実行されます カーネルは3.2.0-26-generic-pae、CPUはAMD、オペレーティングシステムはUbuntu 12.04 x86です。 9日と14時間から実行されます(キャンセルするには長すぎます;-))
54 process  reboot 

5
複数のコマンドを実行し、bashでそれらを殺します
単一のシェルで複数のコマンド(プロセス)を実行したい。それらはすべて独自の連続出力を備えており、停止しません。バックグラウンドでそれらを実行すると壊れますCtrl- C。それらをすべてCtrl-で停止できるように、単一のプロセス(サブシェル、多分?)として実行したいと思いCます。 具体的には、単体テストmocha(監視モード)を実行し、サーバーを実行してファイルの前処理(監視モード)を実行し、1つのターミナルウィンドウでそれぞれの出力を確認します。基本的に、タスクランナーの使用を避けたいと思います。 バックグラウンドでプロセスを実行することで実現できますが(&)、その後、それらを停止するにはフォアグラウンドに配置する必要があります。それらをラップするプロセスが欲しいのですが、プロセスを停止すると、その「子」が停止します。

4
ファイルをロックしているプロセスをリストする方法は?
を使用するとflock、複数のプロセスが同時に共有ロックを保持したり、書き込みロックの取得を待機したりできます。これらのプロセスのリストを取得するにはどうすればよいですか? つまり、ファイルXについて、理想的には、ファイルのロックを保持している、または待機している各プロセスのプロセスIDを見つけることです。ただし、ロックを待機しているプロセスの数を取得するだけでも非常に良いスタートになります。
51 files  process  lock 

4
pkillとkillallの違いは何ですか?
私pkillはそれよりも多くのフィルタリングルールを持っていることを知っていますkillall。私の質問は、次の違いは何ですか? pkill [signal] name そして killall [signal] name 私はそれkillallがより効果的であり、nameプログラムに一致するすべてのプロセスとサブプロセスを(そして再帰的に)殺すことを読みました。 pkillこれもしませんか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.