摘要: 使用命令行运行 Screen 基本操作流程 Screen 是 Linux 系统下的终端复用工具,可在一个终端中管理多个独立会话。 启动新会话: screen -S test_screen # 创建名为 "test_screen" 的会话 进入会话后,可...
使用命令行运行 Screen
- 基本操作流程
- Screen 是 Linux 系统下的终端复用工具,可在一个终端中管理多个独立会话。
启动新会话:
screen -S test_screen # 创建名为 "test_screen" 的会话
进入会话后,可执行任意命令(如交互式操作、长时间运行任务)。
在会话中执行命令: 进入会话后,直接输入命令:
cd / # 切换到根目录
ls # 列出根目录文件
退出会话(保持后台运行):
按下 Ctrl+A + D(先按 Ctrl+A,松开后再按 D),会话将在后台继续运行。
重新连接会话:
screen -r test_screen # 恢复名为 "test_screen" 的会话
彻底关闭会话: 进入会话后,输入:
exit # 或在终端执行 screen -S test_screen -X quit
使用脚本自动化运行 Screen
脚本编写原理
通过 screen -X stuff 命令向指定会话发送键盘输入,实现非交互式执行命令。示例脚本 auto_base.sh:
#!/bin/bash
screen_name="test_screen" # 定义会话名称
# 1. 后台创建会话(-d 后台模式,-m 强制创建)
screen -dmS $screen_name
# 2. 向会话发送命令(-p 0 指定主窗口,-X stuff 模拟键盘输入)
screen -x -S $screen_name -p 0 -X stuff "cd /\n" # 切换目录(注意 \n 表示换行)
screen -x -S $screen_name -p 0 -X stuff "ls -l\n" # 列出详细文件信息(示例优化)
执行脚本:
chmod +x auto_base.sh # 赋予执行权限
./auto_base.sh # 运行脚本
查看结果:
screen -r $screen_name # 连接会话,查看命令执行结果
- 关闭会话的脚本写法 安全关闭方式
方式 1:向会话发送 exit 命令(推荐,允许程序正常退出)
screen -x -S $screen_name -p 0 -X stuff "exit\n"
方式 2:强制终止会话(适用于进程卡住的情况)
screen -S $screen_name -X quit
注意事项
会话名称唯一性:
若会话已存在,需用 screen -D -r test_screen
强制断开其他连接并恢复会话。
命令换行符:
screen -X stuff
需用 \n
模拟换行(如 "command\n"),否则命令无法执行。
权限问题:
若提示 screen: Cannot open your terminal,需确保当前终端支持 Screen(通常默认支持)。
后台模式说明:
-d -m
:创建并立即后台运行会话(不进入交互界面)。-x
:附加到已存在的后台会话(可同时多人连接)。
进阶用法:传递动态参数
若需脚本接收自定义命令,可通过参数动态传入:
#!/bin/bash
screen_name="dynamic_screen"
command1=$1 # 第一个参数为第一条命令(如 "cd /data")
command2=$2 # 第二个参数为第二条命令(如 "ls -al")
screen -dmS $screen_name
screen -x -S $screen_name -p 0 -X stuff "$command1\n"
screen -x -S $screen_name -p 0 -X stuff "$command2\n"
执行示例:
./dynamic_script.sh "cd /var/log" "tail -f syslog" # 监控日志文件
通过以上补充,可更全面地理解 Screen 的交互操作与脚本自动化逻辑,适用于批量任务管理、远程监控等场景。