≡菜单

屏幕命令示例:控制Linux / Unix终端

Screen命令提供了将长时间运行的进程(或程序或shell脚本)从会话中分离出来,然后在以后附加它的功能。

When the session is detached, the process that was originally started from the 屏幕 is still running and managed 通过 the 屏幕. You can then re-attach the session at a later time, and your terminals are still there, the way you left them.

In this article, let us review the how to manage the virtual terminal sessions using 屏幕 command with examples.

Screen Command Example 1: Execute a command (or shell-script), and detach the 屏幕

通常你’ll从命令中执行如下所示的命令或shell脚本。

$ Unix命令-to-be-executed

$ ./unix-shell-script-to-be-executed

Instead, use the 屏幕 command as shown below.

$ 屏幕 Unix命令-to-be-executed

$ 屏幕 ./unix-shell-script-to-be-executed

一旦您’ve used the 屏幕 command, you can detach it from the terminal using any 上 e of the following method.

Screen Detach Method 1: Detach the 屏幕 using CTRL + A d

执行命令时,按 CTRL + A 其次是 d to detach the 屏幕.

Screen Detach Method 2: Detach the 屏幕 using -d option

当该命令在另一个终端上运行时,请按如下所示键入命令。

$ 屏幕 -d SCREENID

Screen Command Example 2: List all the running 屏幕 processes

You can list all the running 屏幕 processes using 屏幕 -ls 命令。

例如:

在1号航站楼上,您执行了以下操作:

$ 屏幕 ./myscript.sh

From terminal 2 you can view the list of all 屏幕 processes. You can also detach it from terminal 2 as shown below.

$ 屏幕 -ls
There is a 屏幕 上 :
	4491.pts-2.FC547	(Attached)
1 Socket in /var/run/screen/S-sathiya.

$ 屏幕 -d 4491.pts-2.FC547
[4491.pts-2.FC547 detached.]

屏幕命令示例3:在需要时附加屏幕

You can attach the 屏幕 at anytime 通过 specifying the 屏幕 id as shown below. You can get the 屏幕 id from the “screen -ls” command output.

$ 屏幕 -r 4491.pts-2.FC547

屏幕命令使用场景1

When you have access to 上 ly 上 e terminal, you can use 屏幕 command to multiplex the single terminal into multiple, and execute several commands. You might also find it very useful to combine the usage of 屏幕 command along with the usage of SSH ControlMaster.

屏幕命令使用场景2

When you are working in a team environment, you might walk over to your colleagues desk and get few things clarified. At that time, if needed, you can even start some process from their machine using 屏幕 command and detach it when you are done. Later when you get back to your desk, you can login and attach the 屏幕 back to your terminal.

如果您喜欢这篇文章,您可能还会喜欢..

  1. 50个Linux Sysadmin教程
  2. 50个最常用的Linux命令(包括示例)
  3. 排名前25位的最佳Linux性能监视和调试工具
  4. 妈妈,我找到了! – 15个实用的Linux Find命令示例
  5. Linux 101 Hacks第二版电子书 Linux 101黑客手册

Bash 101 Hacks书 Sed和Awk 101黑客手册 Nagios Core 3书 Vim 101黑客手册

{ 13 评论… 加一 }

  • 变态杀手 2010年7月6日,上午4:41

    为什么不使用tmux呢?

    http://tmux.sourceforge.net/

    乍一看似乎很克隆,但一段时间后肯定会更好…

  • 反渗透 2010年7月6日,上午6:20

    使用屏幕(或我通常更喜欢的VNC)的一个真正巨大的优势是,在进行不间断的工作(例如安装或复杂的更新)并且您的连接可能不稳定时,可以通过屏幕会话进行工作在更可靠的服务器上,例如在公司数据中心内部。这样,如果您的PC失去了连接,您的工作就不会丢失,也不会面临繁琐的回退/重新启动过程–相反,您只需重新连接到仍在运行的屏幕会话即可。多年来,这种方法使我在支持重要的业务应用程序时免于很多痛苦。

  • 拉克什曼南 2010年7月6日,晚上10:54

    你好
    There is another important usage of 屏幕 command, which is sharing a session between multiple users.
    这是实现该目标的步骤:

    * The 屏幕 executable has to setuid
    chmod u + s / usr / bin / 屏幕
    * Launch a 屏幕 session
    屏幕
    类型ctrl + a and : ( You will get a prompt at the bottom of the 屏幕 to type 屏幕 commands)
    类型“multiuser 上 ”(我们启用了多用户会话)。
    再次按ctrl + a和:。
    键入aclchg user5 -w“#”(username是我们必须与之共享的用户的名称。-w是禁用对该用户的写许可权)

    现在以用户5身份登录并输入
    屏幕 -x lakshmanan/

    Now the user5 will be able to see what the user lakshmanan is doing in the 屏幕.

  • 戴夫 2010年7月7日,晚上8:49

    那么,这是否与每个用户实例隔离?如果我以bob身份登录,则与sam登录同一台计算机,sam会得到bob吗?’s 屏幕 activity when doing 屏幕 -ls?

    Also if I sudo to root, does root own the 屏幕 instance. If bob sudos to root, then sam logs in and sudos to root, could sam see the items that bob started after sudo’ing还是按sudo进行?

  • 吉姆毛绒 2010年7月13日,上午10:07

    you can also name the 屏幕 so when you’re doing 屏幕 -ls or 屏幕 -r you can use a simple name

    屏幕 -S jimtest

    屏幕 -r jimtest

  • 杰里米·伊普森(Jeremy Impson) 2010年8月9日,上午11:41

    一般来说,我建议不要像这样启动屏幕“屏幕./unix-command”。当unix命令退出时,控制屏幕也将退出。这将防止您看到任何错误,警告或输出消息。而是运行“screen”本身将导致它产生一个子shell提示,然后运行“unix-command”在子外壳中。我这样做是我的默认行为,所以我不这样做’t have to think about whether I need the 屏幕 to persist or not.

    My logic is that since most things you want to run in 屏幕 are long-running tasks that you don’不想被打扰’通常,您希望查看它在终端上留下了什么消息,尤其是当它崩溃或被杀死时,通常如此。

    这种方法的缺点是您可以’t start 屏幕 sessions programmatically (say, at boot). That hasn’这对我来说不是一个问题,但是作为一种变通办法,我想您可以编写一个运行命令的shell脚本,然后在输入时进行阻止(“read X”),然后按照本文最初的描述运行该脚本。

  • HakunX3 2010年11月9日,上午9:22

    感谢您的精彩博客。我有个问题。
    How can we see exactly the command (name, arguments, etc) which is being handled 通过 屏幕 instead of 屏幕 ID? If so, I don’不必尝试附加到所有ID中即可找到所需的已处理命令。

  • 高拉夫 2011年1月8日,下午5:36

    你好

    我想将10个Unix命令分组在一个shell脚本中,该脚本在被调用时可以并行运行这10个作业,因为一个作业会为另一个作业提供输入。

    我可以用“screen”命令在每次运行作业时打开一个新窗口?如果是,那么我应该如何处理身份验证,因为每次登录时都需要用户名和密码。

    提前致谢。

  • 智者 2011年5月4日,上午1:28

    感谢这篇出色的文章,实际上,它对我理解这个简单而强大的unix命令很有帮助

  • 安东 2012年4月7日,上午1:48

    真好谢谢。

  • 苏伦德拉 2012年10月15日,上午6:58

    非常感谢

  • Navnath 2012年11月21日,下午7:10

    It’很高兴阅读此101 hacks ..在管理时更有用
    谢谢

  • 同上 2016年5月6日,上午8:48

    这封信是什么“a”代表Ctrl + a吗?

    我知道Ctrl + a是Screen的命令,而不是Shell的命令。我想了解什么“a”Ctrl + a中的代表?

发表评论