我的 Ubuntu 笔记本电脑上有一个工作环境,我想在其中使用三个不同的屏幕。
例如在终端中,我通常写
screen -S mywork
run_server_1
然后,ctrl-a c 创建第二个屏幕
run_server_2
ETC。
我想编写一个脚本来自动设置这个环境,但是如何通过一个脚本控制多个屏幕?
更新:我真的希望能够通过 shell 脚本而不是屏幕配置文件来执行此操作。有办法吗?
答案1
我想说你想要做的是创建一个文件 $HOME/.screenrc.multiwin
# read in your normal screenrc
# before anything else
source $HOME/.screenrc
# now start opening windows
# it's possible to set the window title with
# the -t option
# you can also specify the window number
# to launch in
screen -t server1 5 run_server_1
screen -t server2 6 run_server_2
然后运行
screen -c $HOME/.screenrc.multiwin
会做你需要的
答案2
可以使用从外部传递命令,screen -S sessionname -X command
例如screen -S mywork -X screen run_server_2
将创建一个新窗口(与相同ctrl-a c
),但该窗口中将有 run_server_2 在其中执行。与手动执行不同,该窗口中不会有 shell 运行,因此当 run_server_2 退出时,窗口将被关闭。
控制多个屏幕只需确保它们都以 -S 命名
答案3
我相信tmux对于此类目的而言,编写脚本比使用 screen 要容易得多。tmux 程序在命令行上接受自己的命令作为参数,例如,要启动两个窗口:“tmux new-session -d '/bin/bash' \; new-window -d 'top'”。在第一个窗口中,它将运行一个交互式“bash”shell,在第二个窗口中,它将运行“top”。
答案4
这对我有用
创建新的屏幕会话“mywork”+在标题为“server_1”的窗口中运行 cmd“run_server_1”
screen -dmS mywork -t server_1 sh -c "run_server_1"
自动按 ctrl-a c 创建标题为“server_2”的第二个屏幕窗口并运行 cmd“run_server_2”
screen -S mywork -t server_2 -X screen run_server_2