【问题标题】:Kill Attached Screen in Linux在 Linux 中杀死附加屏幕
【发布时间】:2013-02-11 04:49:39
【问题描述】:

我在 linux 中创建了一个屏幕“myscreen”,但它突然停止响应。我关闭了终端并试图重新打开它。 “screen -ls”显示屏幕已附加。我尝试了以下命令,但没有任何响应。

screen -r myscreen
screen -D myscreen
screen -D -RR myscreen
screen -X -S myscreen quit

非常感谢任何重新连接到屏幕或终止屏幕的帮助。

【问题讨论】:

  • 不确定屏幕是什么,但如果是进程,那么kill -9?
  • 我不确定 screen 是否是一个进程。但是“kill -9”会杀死整个进程。但我想杀死特定的屏幕,让其他屏幕不受干扰。
  • 你试过screen -dr myscreen吗?
  • 也试过“screen -dr myscreen”

标签: linux gnu-screen


【解决方案1】:
screen -X -S SCREENID kill

或者,您可以使用以下命令

screen -S SCREENNAME -p 0 -X quit

执行screen -ls可以查看屏幕会话列表

【讨论】:

  • 我注意到如果您打开了多个窗口,第一个命令序列只会杀死最后一个窗口,而第二个命令序列实际上会杀死整个屏幕,无论窗口数量如何。
  • 是否有可能删除所有进程并清屏?
  • 是的,可以使用pkill screenkillall screen
【解决方案2】:

从终端创建屏幕:

screen -S <screen_name>

查看屏幕列表:

<screen -ls> or <screen -list>

转到特定屏幕:

<screen -x screen_name>

<screen -r screen_name>

内屏


到终止屏幕:

give ctrl+d screen will get terminated

要分离屏幕:

 give <ctrl+ad>or <screen -d >screen will get detached

重新连接屏幕:

screen -x <screen_name> or screen -r <screen_name>

从终端杀死屏幕:

<screen -X -S screen_name quit> 

<screen -X -S screen_name kill>

您可以使用 screen_name 或 process_id 来执行命令。

【讨论】:

  • 这只是一个屏幕命令列表,不是这个特定问题的答案。
  • 这些命令列表帮助我解决了我的问题,感谢您发布
【解决方案3】:

这对我很有效。通过以下方式获取屏幕 ID:

screen -r

screen -ls

然后杀屏:kill -9 &lt;screenID&gt; 它现在变成了死屏, 然后将其清除:screen -wipe

【讨论】:

    【解决方案4】:

    来自屏幕用户的Manual

    screen -d -r "screenName"
    

    重新附加一个会话,如有必要,先将其分离

    【讨论】:

    • 这应该是公认的答案。不丢失屏幕会话的简单解决方案!谢谢!
    【解决方案5】:

    您可以创建一个函数来终止所有现有会话。看看Kill all detached screen sessions

    列出所有活动会话使用 屏幕 -r

    列出后,用鼠标选择您感兴趣的会话并将其粘贴。像这样

    屏幕 -r

    【讨论】:

      【解决方案6】:

      假设您的屏幕 id 有一个模式。然后您可以使用以下代码一次杀死所有附加的屏幕。

      result=$(screen -ls | grep 'pattern_of_screen_id' -o)
      for i in $result; 
      do      
          `screen -X -S $i quit`;
      done
      

      【讨论】:

        【解决方案7】:

        杀死一个分离的屏幕,在终端使用这个:

        screen -X -S "SCEEN_NAME" quit
        

        如果您已连接,则使用(从终端和屏幕内部):

        exit
        

        【讨论】:

          【解决方案8】:

          我通常不命名我的屏幕实例,所以这可能没有用,但你尝试screen -r 没有'myscreen' 部分吗?通常对我来说,screen -r 会显示每个屏幕的 PID,然后我可以重新附加 screen -d -r &lt;PID&gt;

          【讨论】:

          • 是的,这是我尝试的第一个命令。但它没有回应。我尝试以 root 用户身份打开,但甚至没有检测到 root 用户帐户的屏幕。
          【解决方案9】:

          您可以找到附加的运行屏幕的进程ID。 我发现它与您可以通过命令获取的会话 ID 相同:
          screen -ls
          您可以使用以下命令终止该进程:
          kill [sessionId]
          sudo kill [sessionId]

          【讨论】:

            【解决方案10】:

            screen 命令都没有为我杀死或重新连接屏幕。任何screen 命令都会挂起。我找到了另一种方法。

            每个正在运行的屏幕都有一个与之关联的文件:

            /var/run/screen/S-{user_name}

            当运行screen -list 时,该文件夹中的文件将与屏幕名称匹配。如果您删除该文件,它会终止相关的运行屏幕(分离或附加)。

            【讨论】:

              【解决方案11】:

              结果查找:Click Here

              Screen 是一个全屏窗口管理器,它在多个进程之间多路复用一个物理终端,通常是交互式 shell。每个虚拟终端都有一个回滚历史缓冲区和一个允许用户在窗口之间移动文本区域的复制和粘贴机制。

              【讨论】:

              • 这不是很有帮助:它只是手册页的一部分和 OP 肯定已经阅读的备忘单。
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-12-03
              • 2013-01-05
              • 1970-01-01
              • 1970-01-01
              • 2020-11-13
              • 2014-12-13
              相关资源
              最近更新 更多