访问量: 1117 次浏览
启动新会话:
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 -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 的交互操作与脚本自动化逻辑,适用于批量任务管理、远程监控等场景。