“可中断睡眠”状态表示什么?

use*_*001 22 ps window-management

我让 Firefox 在 Parted Magic LiveCD 上运行,然后(可能)由于我不记得的组合键,它很快从屏幕和任务栏/窗口列表中消失了。

然而:

  1. ps ax | grep firefox返回下面的(和不需要的grep firefox行)。两者ps和 GUI 任务管理器都显示 firefox 看似不变的 RSS、VM-SIZE 和 0% CPU 使用率。

    约翰多 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 列值是什么意思的答案中了解到that S(in Sl) 表示进程处于某种interruptible sleep状态。

任何人都可以更详细地说明状态是什么?

编辑

我将开始一个新问题,在我的发行版上有更多细节,以解决最初的第二个问题。

slm*_*slm 24

@msw 很好地解释了您的第二个问题,以及您的一些问题:

B)建议任何相对简单的方法来重新获得任何形式的控制权,(至少)保存我在隐私浏览模式下烦人地打开的标签?

所以我会尝试更多地解决你的第一个问题:

A) 更详细地阐述状态是什么?

状态值Sl(这是一个小写的 L):

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

                 进程的生命周期

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
   [...]
Run Code Online (Sandbox Code Playgroud)

更多详细信息可以在信号手册页man 7 signal以及本教程中看到,标题为:Linux 进程状态


Gil*_*il' 8

您没有对 Firefox 进程做任何事情。它之前已经处于状态S。“可中断睡眠”实际上意味着空闲。进程正在等待,并在收到输入时唤醒。这是一个进程的正常状态,除非你在它繁忙时捕捉它。

你让窗口消失了。也许你将它发送到不同的桌面。如何将其恢复为“正常”方式完全取决于您的窗口管理器,您没有指定。

您也许可以使用其他工具检索窗口,但这在一定程度上取决于它究竟发生了什么以及您的窗口管理器是否合作。试试wmctrl。首先列出带有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,shadedwmctrl -r 0x12345678 -b remove,hidden


msw*_*msw 2

X 客户端有可能失去连接并且不知何故没有收到通知。该进程通常会等待套接字,而该套接字永远不会发生任何事情,使其处于不间断的睡眠状态。

适用于 Firefox (以及其他一些程序,如 Gvim 或 Chrome,它们为存储失败状态做出了特殊规定),简单:

$ kill -TERM pid
Run Code Online (Sandbox Code Playgroud)

将使进程有机会保存打开的选项卡列表,但我不会指望保留表单内容或其他状态。