运行 每 bash 创建一个命令后屏幕中的命令
Run commands in screen after creating one per bash
我有以下 bash 文件,它应该创建一个屏幕,转到一个目录,然后启动一个节点脚本:
screen -S shared // 1
cd /home/nodejsapp // 2
node start.js app.js // 3
问题是,执行1后,确实看到了画面'shared',但是2&3会在之前的终端执行,而不是画面'shared'。
如何实现命令 2 和 3 在当前屏幕上执行?
您可以 运行 一个 "server" 作为屏幕内的程序,它从 "tty" 程序识别的伪终端读取要执行的命令。例如,当我写这篇文章时,tty 说 (inside screen)
/dev/pts/2
我可以通过
写信给它
date >/dev/pts/2
在服务器端,脚本将从同一设备循环读取一行一行。 (在其他一些系统上,有不同名称的
伪终端每一侧的设备)。
只需要一个脚本,该脚本首先获取 "tty" 的输出,将其写入文件(相应的客户端会知道),然后客户端将读取命令(无论是从键盘或文件),通过 pty 设备将它们写入服务器。
只需要几个 shell 脚本就可以做到这一点(虽然比这里的通常答案要长一点)。
您可以创建一个 detached
屏幕,然后向其发送命令。例如:
screen -d -m -S shared
screen -S shared -X -p 0 stuff $'cd /home/nodejsapp\n'
screen -S shared -X -p 0 stuff $'node start.js app.js\n'
如果之后需要附加到 screen
会话,则可以再添加一行:
screen -S shared -r
有关详细信息,请参阅 screen
的手册:
我有以下 bash 文件,它应该创建一个屏幕,转到一个目录,然后启动一个节点脚本:
screen -S shared // 1
cd /home/nodejsapp // 2
node start.js app.js // 3
问题是,执行1后,确实看到了画面'shared',但是2&3会在之前的终端执行,而不是画面'shared'。
如何实现命令 2 和 3 在当前屏幕上执行?
您可以 运行 一个 "server" 作为屏幕内的程序,它从 "tty" 程序识别的伪终端读取要执行的命令。例如,当我写这篇文章时,tty 说 (inside screen)
/dev/pts/2
我可以通过
写信给它date >/dev/pts/2
在服务器端,脚本将从同一设备循环读取一行一行。 (在其他一些系统上,有不同名称的 伪终端每一侧的设备)。
只需要一个脚本,该脚本首先获取 "tty" 的输出,将其写入文件(相应的客户端会知道),然后客户端将读取命令(无论是从键盘或文件),通过 pty 设备将它们写入服务器。
只需要几个 shell 脚本就可以做到这一点(虽然比这里的通常答案要长一点)。
您可以创建一个 detached
屏幕,然后向其发送命令。例如:
screen -d -m -S shared
screen -S shared -X -p 0 stuff $'cd /home/nodejsapp\n'
screen -S shared -X -p 0 stuff $'node start.js app.js\n'
如果之后需要附加到 screen
会话,则可以再添加一行:
screen -S shared -r
有关详细信息,请参阅 screen
的手册: