Linux使用bash脚本启动screen在后台运行应用程序

Linux使用bash脚本启动screen在后台运行应用程序


发布日期: 2025-05-16 更新日期: 2025-05-16 编辑:bukun 浏览次数: 16

标签:

摘要: 使用命令行运行 Screen 基本操作流程 Screen 是 Linux 系统下的终端复用工具,可在一个终端中管理多个独立会话。 启动新会话: screen -S test_screen # 创建名为 "test_screen" 的会话 进入会话后,可...

使用命令行运行 Screen

  1. 基本操作流程
  2. 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. 关闭会话的脚本写法 安全关闭方式

方式 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 的交互操作与脚本自动化逻辑,适用于批量任务管理、远程监控等场景。

相关推荐

关注公众号
获取免费资源

随机推荐


Copyright © Since 2014. 开源地理空间基金会中文分会 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org