一,背景 作为系统管理员,我们经常会有备份数据,导入数据,执行发布变更,资源变更...操作,在早期公司自动化运维并不成熟的情况下,依靠人力手动执行这些操作,或者编写shell脚本来执行这些操作,执行这些操作一般是打开终端,然后执行命令或脚本,那么执行的这个命令会一直占用这个终端,我们称之为前台进程,当终端不小心被我们关闭了,那么该进程也会终止,对于这种事故显然是我们不想看到的

二,简介 GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件,用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换

三,安装 流行的Linux发行版(例如Red Hat Enterprise Linux)通常会自带screen实用程序,如果没有的话,可以从GNU screen的官方网站下载

yum install -y screen
rpm -a screen

四,常用命令

screen -S 终端名称      # 新建一个指定名称的终端
Ctrl + a + d           # 切换到前台,但是保持后台运行的进程
screen -ls             # 查看已经放在后台的进程名称列表
screen -r  名称或ID号   # 进入指定名称的后台程序

五,使用演示 运维系统开发早期,我们需要启动celery_beat和celery_worker进程,为了方便测试我们可以使用screen命令来启动这些前台进程

su - hero
cd heroes_gate
screen -S gate_celery_beat
/home/hero/heroes_gate/venv/bin/celery -A crontask.celery_conf.c beat -l info --logfile=/home/hero/log/heroes_gate_celery_beat.log

image.png

ctrl + a + d image.png

screen -S gate_celery_worker
/home/hero/heroes_gate/venv/bin/celery -A crontask.celery_conf.c worker -l info  --concurrency=8  --logfile=/home/hero/log/heroes_gate_celery_work.log

image.png

ctrl + a +d image.png

screen -ls

image.png

screen -r gate_celery_worker
screen -r 5879