即使在命令返回或被杀死后,如何保持 window 打开?
How to keep the window opened even after the command returned or is killed?
我打开了一个独立的屏幕,运行 新的一些命令 windows:
screen -dm -S test
screen -S test -X screen -t htop htop
screen -S test -X screen -t top top
screen -S test -X screen -top dmesg dmesg -w
and also try
screen -dm -S test
screen -S test -x -X screen htop
screen -S test -x -X screen top
screen -S test -x -X screen dmesg -w
效果很好。当我重新连接屏幕 screen -r test
并使用 ctrl+c
终止 运行ning 应用程序时,window 同时关闭。
当通过 ctrl+a+c
手动创建新的 window 并且我在里面 运行 top/htop/whatever 时,如果我终止应用程序,window 会保留,我可以运行 新命令。
为什么?我怎么会有相同的行为?我希望能够在同一个 window.
中再次终止和 运行 命令
回答
你需要让屏幕知道你想要 shell 运行ning 在新的 window 中使用命令 运行ning 在那个 shell .完成此操作的最简单方法(据我所知)是创建 window 与 运行 中的命令分开创建:
screen -S session_name -X screen -t tab_name
screen -S session_name -p tab_name -X stuff "command_to_run \r"
示例:
screen -S test -X screen -t htop_tab
screen -S test -p htop_tab -X stuff "htop\r"
备注:
\r
用于模拟按下 return 键。
stuff
将让您与该 window 中的任何 运行ning 进程进行交互
说明
手动方法与您使用的命令之间的区别是:
- 当您手动创建一个新的 window 时,您正在创建一个带有交互式 shell 运行 的 window,然后您在其中键入一个命令shell 启动程序。当你杀死那个程序时,它会回到 shell 并且你可以做任何你想做的事情。
- 另一方面,您的命令指示屏幕创建一个新的 window,其中包含提供的命令 运行ning(即不要 运行 a shell), 所以当你杀死它时, window 中没有进程 运行ning 并且它关闭
屏幕手册页的相关摘录:
在默认键绑定部分:
C-a c, (screen) Create a new window with
C-a C-c a shell and switch to
that window.
内屏指令说明中:
If a command is specified after "screen", this command (with the given arguments) is started in the window; otherwise, a shell is created.
我打开了一个独立的屏幕,运行 新的一些命令 windows:
screen -dm -S test
screen -S test -X screen -t htop htop
screen -S test -X screen -t top top
screen -S test -X screen -top dmesg dmesg -w
and also try
screen -dm -S test
screen -S test -x -X screen htop
screen -S test -x -X screen top
screen -S test -x -X screen dmesg -w
效果很好。当我重新连接屏幕 screen -r test
并使用 ctrl+c
终止 运行ning 应用程序时,window 同时关闭。
当通过 ctrl+a+c
手动创建新的 window 并且我在里面 运行 top/htop/whatever 时,如果我终止应用程序,window 会保留,我可以运行 新命令。
为什么?我怎么会有相同的行为?我希望能够在同一个 window.
中再次终止和 运行 命令回答
你需要让屏幕知道你想要 shell 运行ning 在新的 window 中使用命令 运行ning 在那个 shell .完成此操作的最简单方法(据我所知)是创建 window 与 运行 中的命令分开创建:
screen -S session_name -X screen -t tab_name
screen -S session_name -p tab_name -X stuff "command_to_run \r"
示例:
screen -S test -X screen -t htop_tab
screen -S test -p htop_tab -X stuff "htop\r"
备注:
\r
用于模拟按下 return 键。stuff
将让您与该 window 中的任何 运行ning 进程进行交互
说明
手动方法与您使用的命令之间的区别是:
- 当您手动创建一个新的 window 时,您正在创建一个带有交互式 shell 运行 的 window,然后您在其中键入一个命令shell 启动程序。当你杀死那个程序时,它会回到 shell 并且你可以做任何你想做的事情。
- 另一方面,您的命令指示屏幕创建一个新的 window,其中包含提供的命令 运行ning(即不要 运行 a shell), 所以当你杀死它时, window 中没有进程 运行ning 并且它关闭
屏幕手册页的相关摘录:
在默认键绑定部分:
C-a c, (screen) Create a new window with C-a C-c a shell and switch to that window.
内屏指令说明中:
If a command is specified after "screen", this command (with the given arguments) is started in the window; otherwise, a shell is created.