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

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

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

然而:

  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 火狐


  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(in )表示Sl进程处于某种interruptible sleep状态。

谁能更详细地解释一下状态是什么?

编辑

我将开始一个新问题,其中包含有关我的发行版的更多细节,以解决最初的第二个问题。

答案1

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

                 流程的生命周期

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 进程状态

答案2

您没有对 Firefox 进程执行任何操作。之前已经是S状态了。 “可中断睡眠”实际上意味着空闲。该进程正在等待,并在收到输入时被唤醒。这是进程的正常状态,除非您在进程繁忙时捕获它。

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

您也许可以使用其他工具检索窗口,但这在某种程度上取决于它到底发生了什么以及您的窗口管理器是否配合。尝试控制面板。首先使用 列出 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,shadedwmctrl -r 0x12345678 -b remove,hidden

答案3

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

对于火狐浏览器仅有的(以及其他一些程序,例如 Gvim 或 Chrome,它们对失败时的存储状态做出了特殊规定)一个简单的:

$ kill -TERM pid

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

相关内容