批量创建 screen 启动脚本

admin 2024年7月23日15:02:49评论49 views字数 1276阅读4分15秒阅读模式

screen 是 linux 下的后台会话管理工具,许多以前需要后台运行的进程,配合 screen 可以放在前台运行。对比后台进程,好处是随时可以切到 screen 会话中观察进程运行状态。

screen 中的任务既保留了前台任务的优点,又可以随时切到后台运行,并且没有断网的担忧。直接通过 ssh 远程执行的前台任务,如果出现断网会导致进程中断。

缺点是 screen 会话启动多了后,会出现管理困难,比如重启所有 screen 会话。

将 screen 任务制作成 screen 脚本,这样就可以保留 screen 会话内容,在必要时调用脚本启动 screen 任务。

可以把任务简化为两步:

  • 创建 x.sh 脚本,脚本内容为实际需要执行的内容;

  • 创建启动脚本 x_rc.sh ,该脚本通过 screen 命令调用 x.sh 脚本,并在 screen 会话中执行 x.sh 脚本;


示例:(x.sh)

#!/bin/bash
cd /root/appsPWD=`pwd`echo "Current working dir: "$PWD./speedtest

以上示例脚本启动 speedtest 测速程序,使用前台方式运行。

示例:(x_rc.sh)

#!/bin/bash
RC_NAME=speedtest_001RC_DIR="/screenjob"cmd="/bin/bash ${RC_DIR}/rc_job/${RC_NAME}.sh"SCREEN=/usr/bin/screen$SCREEN -dmS $RC_NAME$SCREEN -x -S $RC_NAME -p 0 -X stuff "$cmd"$SCREEN -x -S $RC_NAME -p 0 -X stuff $'n'

启动脚本 x_rc.sh  负责启动 screen 会话,并在 screen 会话中调用 x.sh 脚本。

批量结束 screen 会话,可以执行如下脚本:(stop_all_screen.sh)

#!/bin/bash
function stop_all_screen{ for item in `screen -ls| grep Detached| awk '{print $1}'`; do screen -X -S $item quit done}
stop_all_screen

批量创建 screen 脚本,可以提前准备好 x 和 x_rc 脚本,根据 screen 会话名批量调用脚本:

#!/bin/bash
RC_DIR=./

function restart_screen{ RC_NAME=$1 screen -X -S $RC_NAME quit /bin/bash $RC_DIR/rc_job/${RC_NAME}_rc.sh}

restart_screen s001

以上脚本在 github 项目 screenrc 中都准备好了。git clone 下来后,根据自己的需要进行调整:

https://github.com/hyang0/screenrc

screenrc 项目主页:

批量创建 screen 启动脚本

备注

通过将交互式 screen 任务改造成 screenrc 脚本,可以实现定时或手动重启 screen 任务,达到类似系统服务的效果。

批量创建 screen 启动脚本

全文完。

原文始发于微信公众号(生有可恋):批量创建 screen 启动脚本

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月23日15:02:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   批量创建 screen 启动脚本https://cn-sec.com/archives/2990059.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息