web-dev-qa-db-ja.com

「割り込み可能なスリープ」状態は何を示していますか?

Parted Magic LiveCDでFirefoxを実行していたところ、(おそらく)覚えていないキーの組み合わせの結果として、画面とタスクバー/ウィンドウリストからすぐに消えてしまいました。

しかしながら:

  1. ps ax | grep firefoxは以下(および不要なgrep firefox行)を返します。 psとGUIタスクマネージャーの両方で、RSS、VM-SIZE、およびCPU使用率が0%であるように見え、Firefoxが表示されます。

    johndoe 1916 36.6 14.0 923772 504372 tty1 Sl 13:30 12:15 Firefox


  2. pstree | grep firefoxは次を返します:

    init─┬─2* [ROX-Filer───firefox───25* [{firefox}]]


  3. strace -p 1916が返され、一見この行に永遠に留まっているようです:

    futex(0xac975608), FUTEX_WAIT_PRIVATE, 1, NULL

psのSTAT列の値はどういう意味ですか?SSl内)は、プロセスがinterruptible sleep状態であることを示しています。

誰がより詳細に状態について詳しく説明できますか?

[〜#〜]編集[〜#〜]

元の2番目の質問に対処するために、ディストロでより具体的に新しい質問を開始します。

19
user66001

@mswは2番目のQと1番目のQのいくつかを説明する良い仕事をしました:

B)プライベートブラウジングモードで煩わしく開いたタブを(少なくとも)保存するために、任意の形式の制御を取り戻す比較的簡単な方法を提案しますか?

だから私はあなたの最初のQをもう少し試してみます:

A)状態について詳しく説明してください。

状態値Sl(これは小文字のLです):

   S    Interruptible sleep (waiting for an event to complete)
   l    is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)

lifecycle of process

PROCESS STATE CODES
   R  running or runnable (on run queue)
   D  uninterruptible sleep (usually IO)
   S  interruptible sleep (waiting for an event to complete)
   Z  defunct/zombie, terminated but not reaped by its parent
   T  stopped, either by a job control signal or because
      it is being traced
   [...]

詳細については、シグナルのマニュアルページman 7 signalおよびこのチュートリアルのタイトル Linuxプロセスの状態 を参照してください。

20
slm

Firefoxプロセスに対して何もしませんでした。以前はすでに状態Sでした。 「割り込み可能なスリープ」は実質的にアイドル状態を意味します。プロセスは待機中であり、入力を受け取ると起動します。これは、ビジー状態のときにキャッチしない限り、プロセスの通常の状態です。

ウィンドウを非表示にしました。多分あなたはそれを別のデスクトップに送ったでしょう。それを「通常の」方法に戻す方法は、ウィンドウマネージャーに完全に依存しますが、これは指定していません。

他のツールでウィンドウを取得できる場合もありますが、ウィンドウに何が起こったか、ウィンドウマネージャーが連携しているかどうかによって多少異なります。 wmctrl を試してください。最初に、Firefoxウィンドウをwmctrl -l | grep Firefoxでリストします。最初の列のウィンドウID(0x12345678など)をメモします。ウィンドウを現在のデスクトップに戻すには、wmctrl -R 0x12345678;を使用します。または、wmctrl -a 0x12345678を使用してデスクトップに切り替えます。これを最大化するには(画面外のウィンドウを処理するか、単一ピクセルに縮小します)、wmctrl -r 0x12345678 -b add,maximized_vert,maximized_horzを実行します。または、wmctrl -r 0x12345678 -e 1,50,100,1000,800を使用してウィンドウを移動し、サイズを変更します。 wmctrl -r 0x12345678 -b remove,shadedまたはwmctrl -r 0x12345678 -b remove,hiddenを使用して、ウィンドウのシェーディングを解除または再表示する必要がある場合があります。

Xクライアントが接続を失い、どういうわけかそれが通知されない可能性があります。多くの場合、プロセスは何も来ないソケットを待機し、中断できないスリープ状態にします。

Firefoxの場合only(およびGvimまたはChromeなどのその他のいくつかのプログラムは、障害のある状態を保存するための特別な準備をする)単純です:

$ kill -TERM pid

開いているタブのリストをプロセスに保存する機会をプロセスに与えますが、フォームの内容やその他の状態が保持されるとは限りません。

2
msw