Articles of gnu screen

尝试从内部通过屏幕启动一个进程

我有一个有点怪异,可重复,但无法解释的问题与screen 。 我使用ansible / vagrant为我的公司构build了一个一致的开发环境,作为一个略显华丽的点睛之笔,它启动了在screen会话中运行的dev服务器,所以前端开发人员不需要打扰login并手动启动进程,但后端开发者可以login并进行控制。 然而,其中一个系统 – 尽pipe是从头开始构build – 最终会立即死屏(它不logging任何东西到屏幕日志)。 手动运行命令可以正常工作。 (命令正在) screen -L -d -m bash -c /home/vagrant/run_screen_server.sh 我甚至已经在系统上关注了与vagrant / virtualbox有关的所有事情,确保它安装了一个干净的夜间盒子。 完全相同的源代码盒适用于所有其他机器。 有没有其他的debugging步骤,我可以采取还是有什么我失踪?

sudo:命令未find

我正尝试使用sudo作为另一个用户执行screen 。 我正在使用这个命令: echo 'userpassword' | /usr/bin/sudo -u 'myuser' -S '/usr/bin/screen -ls' 在互联网上find的任何帮助说, sudo清除环境variables(如PATH )。 所以我决定使用应用程序的完整path,但我仍然得到命令未find错误。 错误: sudo: /usr/bin/screen -ls: command not found Sudo安装在系统上。 屏幕安装在系统上。 对于sudo ,我尝试了-E和-H标志,但是没有帮助。 我试图设置PATHvariables使用这样的事情: … | /usr/bin/sudo -u 'myuser' -S 'env PATH=$PATH; /usr/bin/screen -ls' 据说$PATH是假设展开之前执行的命令,但我得到其他错误… 有人可以提供一个命令,让我作为另一个用户执行命令,并解释命令的每个部分做什么,我可以理解它? 谢谢。

Linux如何在远程服务器的后台运行脚本?

我在一台linux机器上。 我想在删除服务器上运行四个Perl脚本。 每个脚本都会生成一个输出文件,但运行可能需要几个小时。 我想在后台运行脚本,如果我从服务器断开连接或退出shell提示符,它将继续运行。 这些脚本还在运行时向命令terminal输出行。 我希望能够检查脚本正在打印到命令terminal的print语句。 我通常会使用screen -S命令来创build一个屏幕。 然后按CTRL+A CTRL+D去附加,并screen -r重新连接到屏幕,但我所在的远程服务器没有屏幕。 而且我没有安装sudo的权限。 如何在远程服务器的后台同时运行这4个Perl脚本?

如何打开/切换到Linux中的第10个屏幕会话?

我有一个屏幕会议,我已经创build了10个会话。 我使用下面的组合键切换到附加的活动屏幕会话。 ctrl + a +数字0到9 Ctrl-a 0-9转到编号为0-9的窗口 我已经创build了第十届会议 ctrl-a 10将结束到屏幕会话1。 如何切换到第十届会议? 同样的工作,去第九届会议Ctrl-a 9,然后CTRL-N将带领我到第十届会议。 链接我提到在linux学习屏幕 http://www.kb.indiana.edu/data/acuy.html

bash如何处理嵌套引号?

我需要运行一个像这样的语法的命令: runuser -l userNameHere -c '/path/to/command arg1 arg2' 不幸的是,我必须将其他字符embedded命令本身,而我不能告诉bash正确解释这些字符。 我想运行的命令实际上是: runuser -l miner -c 'screen -S Mine -p 0 -X eval 'stuff "pwd"\015'' 不幸的是,bash似乎正在遭遇第二次'呕吐”。 这是错误的: -bash: screen -S Mine -p 0 -X eval stuff: No such file or directory ,所以显然没有越过' 。 我怎样才能把它作为一个命令? 谢谢!

不能发送CTRL-C到SCREEN会话中的程序

我试图创build一个CentOS initscript来包装启动和停止守护进程。 守护进程是一个Python控制台应用程序,devise为在SCREEN会话中,在特定的用户下运行,并在检测到CTRL-C时干净closures。 这个脚本需要以root身份运行,所以我按照这个问题的答案写下了“stop”函数: su – -c "screen -S $prog -X stuff $'\003'" $screenuser 但是它不能停止守护进程,但是如果我附加到会话 su – -c "screen -r $prog" $screenuser 并击键盘上的CTRL-C,应用程序干净地closures。 我无法弄清楚为什么脚本方法不起作用。

发送命令到分离的屏幕,这将改变活动窗口

我怎样才能发送一个命令到一个分离的GNU屏幕会话,它改变了当前的活动屏幕? 所以如果我在第3个窗口离开会话,在给出命令并再次打开屏幕会话之后,我可以在第4个窗口中。 我尝试了这样的: screen -r -X 'screen next' 但它没有奏效。 “下一个”是切换到下一个窗口的屏幕命令。 我想做的是这样的:我有一个由Raspberry Pi和一个USB硬盘制成的超亲切的自制种子盒。 由于它只有256Mb的RAM,我不能同时运行所有的种子(大约2000)。 那么我该怎么做。 将洪stream分成6个文件夹,在每个文件夹中运行rtotrrent实例。 我每天都停止正在运行的文件夹中的小程序,并在下一个文件夹中启动它。 我想用cron做一个shell脚本来为我做,但是我解决不了这个问题。 如何更改下一个当前的屏幕窗口.. 而且我想在屏幕上运行它,因为我现在想要看到我在播种什么。 谢谢

在GNU屏幕的hardstatus中显示一个窗口的用户

我正在寻找一种方式来显示在hardstatus行GNU屏幕会话中的每个窗口的活动用户。 例 我有以下窗口打开 Window 0 – user1@localmachine Window 1 – user1@localmachine Window 2 – user1@localmachine SSH to user2@remotemachine 目前来说,硬核是: 0$ something [user1] 1$ something [user1] 2$ something [user2] 手动inputsomething [username] 。 有没有办法自动显示当前的Windows用户?

如何使用确切的会话名称进入屏幕?

我正在使用屏幕来运行应用程序的很多不同的实例,并将会话命名为“app1”,“app2”等。 问题是,如果我有一个名为“app10”的屏幕后,名为“app1”,当我键入 screen -r app1 我会连接到app10屏幕,因为这是最后一个屏幕创build“匹配”名称app1。 是否有可能摆脱名称匹配和使用确切的名字? 由于技术原因,我不想将app1更改为app01。 它用于目录名称,自动化等

在屏幕会话中访问SSH客户端IP地址

通过环境variables(如SSH_CONNECTION)访问连接SSH客户端的IP地址是可能的,如下所述 在SSH会话中查找客户端的IP地址 在GNU屏幕会话中,这些环境variables是由开始屏幕的人定义的。 有没有什么办法可以获得SSH连接信息,对于稍后进入已经存在的屏幕会话的人,比如从另一个主机? 我想不出一种方法来确定这一点,但是,例如,在屏幕会话由不同的人共享的情况下,这可能是有用的。