这个 Bash 脚本利用 screen 实用工具在 Linux 环境下自动创建和管理会话,使得用户可以在后台运行并维持多个进程。该脚本提供了一种简便的方法来确保特定的应用或任务能够在后台持续运行,即使用户断开了 SSH 连接。

脚本功能介绍

#!/bin/bash
# 使用 screen 运行程序
# screen -ls 查看所有运行的后台任务
# screen -r frp 进入frp后台任务
# ctrl + A + D 后台运行任务
# 在 screen 中直接 exit 退出,结束后台任务

# 定义screen会话的名字
SESSION="frp"
# 检查是否存在名为$SESSION_FRP的screen会话
if ! screen -list | grep -q $SESSION; then

  # 启动一个新的screen会话,名为$SESSION
  screen -dmS $SESSION
  
  # 向screen会话发送命令 \n 回车
  screen -S $SESSION -X stuff 'bash\n'
  screen -S $SESSION -X stuff 'sleep 60s\n' # 如果需要等60秒,可以加一行这个
  screen -S $SESSION -X stuff '/home/glw/frp_me/frpc -c /home/glw/frp_me/frpc.ini\n'
fi


SESSION="jupyter"
if ! screen -list | grep -q $SESSION; then
  screen -dmS $SESSION
  
  screen -S $SESSION -X stuff 'bash\n'
  screen -S $SESSION -X stuff 'conda activate pytorch\n'
  screen -S $SESSION -X stuff 'jupyter lab --ip=0.0.0.0 --notebook-dir=/home/glw/jupyter --port=8888\n'
fi

1. 检查和创建会话

  • 功能:脚本首先检查指定的 screen 会话是否已经存在。如果会话不存在,脚本会自动创建一个新的 screen 会话。
  • 实现方式:使用 screen -list | grep -q $SESSION 命令来检查指定名字的会话是否存在。如果不存在,使用 screen -dmS $SESSION 命令创建一个新的分离式会话。

2. 向会话发送命令

  • 功能:一旦会话被创建,脚本使用 screen -S $SESSION -X stuff '<command>\n' 命令向该会话发送需要执行的命令。
  • 应用范围:这一功能非常灵活,可以用于启动各种应用,比如网络服务、数据处理任务、或任何需要长时间运行的脚本。

开机自启

你可以通过cron@reboot指令来安排你的脚本在每次系统启动时运行。

  1. 打开当前用户的cron作业列表:

    crontab -e
  2. 在打开的编辑器中,添加以下行来安排你的脚本在启动时运行:

    @reboot /path/to/your/script.sh

    替换/path/to/your/script.sh为你脚本的实际路径。