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


18

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

しかしながら:

  1. ps ax | grep firefox以下(および不要なgrep firefox行)を返します。両方psとGUIタスクマネージャーは、一見不変のRSS、VM-SIZE、0%CPU使用率で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列値を何?ことをS(ではSl)プロセスがであることを示すinterruptible sleep状態。

誰が州が何であるかを詳細に詳しく説明できますか?

編集

元の2番目の質問に対処するために、ディストリビューションの詳細を指定して、新しい質問を開始します。


@ブライアム-完了。私がこれをすることに消極的だったのは、初めてやったとき、どういうわけか助けが問題から遠ざかり、Parted Magicをフルタイムのディストリビューションとして使っていたという信念に基づいた議論になりました。今回はこれが起こらないことを心から願っています:
user66001

回答:


18

@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)

                 プロセスのライフサイクル

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ページ、man 7 signalおよびこのチュートリアル(Linuxプロセス状態)を参照してください


非常に(!)内部の仕組みを理解するのに役立ちます。ありがとう!+1
user66001

@ user66001はanswer.itを受け入れます。ありがとうございます。
muneeb_ahmed

8

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

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

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


Gillesに感謝-これは異常に聞こえるかもしれませんが、どのWindow Managerを実行しているのかわかりません。LXDE(約LXPanelボックスにリストされている)でしょうか?また、wmctrlは私のディストリビューションでは利用できないようです-私の無知をお許しください
user66001

@ user66001 LXDEはデスクトップ環境です。デフォルトのウィンドウマネージャーはOpenboxです(別のウィンドウマネージャーをサポートしているかどうかはわかりません)。ディストリビューションにwmctrlがない場合は、ソースをダウンロードしてコンパイルしてみてください。それはいくつかのライブラリに依存しますが、それらはどれも異国的なものではありません。それらはすべてディストリビューションによって提供されるべきです。をお持ちの場合はxdotool、これらのすべて、または少なくとも有用なものをすべて実行できる可能性がありますので、試してみてください(マニュアルのウィンドウコマンドとデスクトップおよびウィンドウコマンドを参照してください)。
ジル 'SO-悪であるのをやめる'

ああ、ありがとう。ノーxdotoolどちらか-あなたはそれを意味するとき、あなたはコンパイルについて話している「これらの全て行うことができるかもしれません」wmctrl?、またはあなたはそれを実行可能な操作を Linuxソースのコンパイルに関する推奨ガイドを教えてください(Linuxの新機能、Windows環境から)。
user66001

@ user66001私はそれを意味しxdotoolwmctrl同様の機能を持っています(ここで必要なものに関しては、提供するものが異なります)。Linuxを初めて使用する場合は、より多くのパッケージを含むディストリビューションをお勧めします。RHELまたはCentOSやScientific Linuxなどのバリアントを実行している場合、Repoforgeにパッケージがあります。ソースからビルドしたい場合は、これを読んでください —しかし、パッケージが見つかればインストールする方が簡単です。
ジル 'SO-悪である停止'

どのツールを構築する方が簡単ですか?また、ディストリビューションにパッケージマネージャーがなかった場合、どのようなパッケージがありますか?探しているべきです(これは非論理的な質問だと思いますが、パッケージがバイナリのバンドルであり、依存関係がリストされており、設定が変更されていると仮定するのは間違っていると思います)?
user66001

2

Xクライアントが接続を失い、どういうわけか通知されない可能性があります。プロセスは、ソケットが何も来ないように待機することが多く、ソケットを中断することはありません。

Firefox のみ(およびGvimやChromeのような、障害状態を保存するための特別な準備を行う他のプログラム)の場合:

$ kill -TERM pid

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


特にキーを押した結果として、ローカルXクライアントがXサーバーとの接続を失うことはまずありません。Firefoxを強制終了しても、プライベートブラウジングモードのウィンドウに関する情報は保存されません。
ジル 'SO-悪であるのをやめる'

Lazarusを使用し、(プライベートブラウジングモードを使用してプライマリGmailアカウントを切り替えたり、GDOCを開いて、タブに隣接するWebサイトの情報を使用してドキュメントを表示/編集し、すべてのGmailアカウントからログアウトすることなく-GoogleのGrr)には「前回のウィンドウとタブを記憶する」というFFがあるため、プライベートブラウジングモードで開いているタブのみを気にします。したがって、上の上記の議論を知っているのは良いことですがkill、FFがこの状況で私のタブを保存することを疑います。FFがXに再接続する方法はありますか?
user66001

「FFがXに再接続する方法はありますか?」クライアントプロセスがシグナルを取得せずにウィンドウのマッピング/破棄を行う方法を理解できなかったため、FFプログラムからUIへのソケットは開いたままであると想定しています。プロセスがソケットに接続されている限り、どのプロセスもそれを利用することはできません。(あなたが私にそれを考えさせたので、これはXサーバーとクライアントの間のプロトコルエラーが原因であると疑っています。
msw
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.