screen——让任务在linux后台运行

常常需要在linux远程服务器上运行一些任务,这些任务并不是短时间内就可以完成的,一旦关闭终端(terminal)窗口或者断开链接,任务就会被杀死;或者我们想要同时运行多个任务,但又不想开多个终端窗口,怎么办?

这时候screen就派上用场了,它能实现任务和当前窗口的分离,即使你关掉了当前窗口,只要服务器还在运行,任务就依旧在后台运行;借助screen还能在当前窗口同时开始多个任务。

一般的linux系统都会自带screen,如果没有安装的话,使用如下命令进行安装

sudo apt-get install screen

或sudo yum install screen

我主要是为了让tensorboard服务、jupyter服务等长期在远程服务器上后台运行,才使用screen的。这涉及到一些基础的screen操作,如下所述,亲测可行。

1 查看有哪些会话窗口正在运行

# 在命令行输入如下命令
screen -ls

# 终端返回结果示例
There is a screen on:
        28114.tensorboard       (12/18/19 05:53:27)     (Detached)
1 Socket in /var/run/screen/S-root.

这说明有一个会话窗口在后台运行,该会话的编号是28114(用户新建窗口后系统给的),名称是tensorboard(用户新建窗口时指定的)       

2 新建窗口,并进入到这个窗口。(就相当于新开了一个terminal窗口,然后就可以执行任何你想要的命令行操作了)

# 在命令行输入如下命令(其中gbl_jupyter在我自己起的名字)
screen -S gbl_jupyter

3 退出会话窗口,但希望任务继续运行,请使用快捷键 ctrl-a-d

   这其实就是执行了分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)

4 重新恢复/进入一个窗口

screen -r 28114 # 28114是你想进入的会话窗口的编号

5 将窗口从atached状态转换为detached状态,其实就是将前一登录用户踢出

screen -d 28114

6 关掉/杀死 某个窗口

screen -S 28114 -X quit

7 清除所有dead掉的窗口

窗口后面有(???dead)字样,说明窗口死了,但是仍在占用空间

screen -wipe

除了上述操作,screen还有一些好玩的功能,比如会话共享,也就是说你可以和其他人同时从不同的终端进行到同一个会话,这时候你们看到的界面是完全一样的,你可以看到他正在以多快的速度敲代码,他也可以看到你输入的命令行操作,亲测可行,嘻嘻嘻,很好玩的=-=

Linux 后台运行指令能够让你启动的应用程序或进程在你关闭终端之后依然继续运行。这对于长时间任务尤其有用,比如下载大文件、运行服务器等。 下面是几种常用的让命令行应用后台运行的方式: 1. **& 符号** 最简单的做法是在你要执行的命令最后加上`&`符号。例如: ``` ping baidu.com & ``` 这样做可以让 `ping` 命令立刻进入后台运行,并立即返回提示符供您输入新命令。但是需要注意的是,如果你直接关闭了终端窗口,则这个后台任务可能会被终止。 2. **nohup 和 & 组合** 使用`nohup`(代表 no hang up)可以防止挂起操作,使得即使用户注销系统或者关闭终端,该作业仍然会继续执行下去。 示例: ```bash nohup ping baidu.com > output.log 2>&1 & ``` 上述命令将会把标准输出和错误信息都重定向到名为"output.log"的日志文件里存储起来;而结尾处的"&"保证此过程可以在后台持续进行而不受当前shell环境影响。 3. **screen/Tmux 工具** 对于更复杂的场景下管理多个长期运行任务来说,推荐使用如`screen` 或者 `tmux`这类工具创建虚拟控制台,在其中你可以自由地切换各个session之间的状态并且保持所有子进程中正在做的工作不会因为网络断开等原因意外停止。 4. **at / batch 系统调度命令** 如果你需要定时去触发某个脚本或者一次性完成特定时间段后的某项活动的话,那么就可以考虑利用 Linux 内置的时间计划服务——`cron` 表达式搭配 `at` 或者 `batch` 来安排将来的事件自动发生。 5. **systemd-service (对于守护进程)** 当涉及到需要作为系统服务的形式常驻内存里的时候(类似 Windows 的 services),应该编写 systemd service unit 文件并配置好相应属性后通过 systemctl enable/disable/start/stop/restart/status 操作来进行维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值