nohup VS screen

栏目: IT技术 · 发布时间: 4年前

内容简介:说到在Linux系统上后台运行任务,可能很多人的第一反应是01

nohup VS screen

说到在 Linux 系统上后台运行任务,可能很多人的第一反应是 nohup 命令,可能还会有人提到 screen 命令。今天老张就给大家介绍这两个命令,相信看完老张的介绍,大家可以根据实际情况灵活选择使用二者。

01

nohup

先来看一下nohup的帮助文档:

root@ubuntu:~# nohup --help

Usage: nohup COMMAND [ARG]...

or: nohup OPTION

Run COMMAND, ignoring hangup signals.


--help display this help and exit

--version output version information and exit


If standard input is a terminal, redirect it from an unreadable file.

If standard output is a terminal, append output to 'nohup.out' if possible,

'$HOME/nohup.out' otherwise.

If standard error is a terminal, redirect it to standard output.

To save output to FILE, use 'nohup COMMAND > FILE'.

nohup 相对比较简单,帮助文档说的也比较明白。但是实际使用中往往需要配合一些其他的linux特性。

搭配“&”后台运行

使用 nohup 启动的程序会忽略 hangup 信号, hangup 只是终止信号的一种,但是在关闭终端时,还会有其他的终止的信号,所以这时候往往需要配合 & 一起使用,这样就可以做到不管是我们主动或者意外断开终端,程序依然能够继续运行。

root@ubuntu:~# nohup COMMAND &

搭配“>”、“<”重定向输入输出

因为 nohup 在缺省状态下会将原本输出到控制台的 stdoutstderr 重定向至执行目录下的nohup.out文件,在特殊需求的情况下需要配合linux的文件重定向自定义输入输出文件。下面的实例将标准输入(0)、标准输出(1)、标准错误(2)分别重定向至my.in、my.out、my.err。

root@ubuntu:~# nphup COMMDAND 0 < my.in 1 > my.out 2 > my.err

02

screen

比起 nohupscreen 要复杂的多,我们先来看一下 screen 官方给出的简介。

屏幕是一个全屏窗口管理器,它在多个进程(通常是交互式外壳程序)之间多路复用物理终端。

……

当screen被调用的时候,它会创建一个带有 SHELL 的窗口,你可以像平时操作SHELL一样的运行你的进程。你可以随时创建运行其他进程的窗口,杀死当前窗口,查看活动窗口的列表,打开和关闭输出日志记录,在窗口里面查看回滚历史记录,在窗口之间切换等。所有的窗口之间都是相互独立的。即使断开screen会话,进程依然能够在后台运行。

……

安装screen

虽然使用 screen 需要用户自己安装,但是 screen 安装相对简单。

CentOS用户可以使用 yum 安装:

root@centos:~# yum install screen

Ubuntu用户可以使用 apt 安装:

root@ubuntu:~# apt install screen

screen的用法

screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s <shell>][-S <作业名称>]


-A  将所有的视窗都调整为目前终端机的大小。

-d<作业名称>  将指定的screen作业离线。

-h<行数>  指定视窗的缓冲区行数。

-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。

-r<作业名称>  恢复离线的screen作业。

-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。

-s<shell>  指定建立新视窗时,所要执行的shell。

-S<作业名称>  指定screen作业的名称。

-v  显示版本信息。

-x  恢复之前离线的screen作业。

-ls或--list  显示目前所有的screen作业。

-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。

-r 搭配 -S 可以非常方便的复用如数据库查询之类的某些需要打开的SHELL操作。

screen的快捷键

比起退出 VIM 来说,退出 screen 的难度恐怕也不遑多让 nohup VS screen 。进入 screen 窗口后,虽然感觉是操作与普通终端无异,但是 screen 本身也有许多快捷键,而这些快捷键都需要搭配 Ctrl+a

ctrl a ctrl a, 最近使用的两个窗口之间切换

ctrl a + 数字, 切换到某个窗口

ctrl a + d, detach

ctrl a + k, 关闭当前窗口

ctrl a + :, 进入命令行模式

ctrl a C, 清空窗口数据

ctrl a + A, 修改当前窗口的名称

以退出当前窗口为例,需要先按下 Ctrl+a ,松开之后快速按 d 。更多的快捷键可以查阅官方文档:

http://www.gnu.org/software/screen/manual/screen.html#Default-Key-Bindings

03

nohup VS screen

开箱即用,无需安装
易用性
支持窗口输入、输出
退出终端,进程继续运行 可以,但是需要配合& 可以
适用场景 单次运行、耗时很久的进程 除了支持后台运行外,正常的终端操作也可以使用screen完成。

nohup VS screen

nohup VS screen

在看点这里

nohup VS screen


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

轻量级Django

轻量级Django

茱莉亚·埃尔曼 (Julia Elman)、马克·拉温 (Mark Lavin) / 侯荣涛、吴磊 / 中国电力出版社; 第1版 / 2016-11-1 / 35.6

自Django 创建以来,各种各样的开源社区已经构建了很多Web 框架,比如JavaScript 社区创建的Angular.js 、Ember.js 和Backbone.js 之类面向前端的Web 框架,它们是现代Web 开发中的先驱。Django 从哪里入手来适应这些框架呢?我们如何将客户端MVC 框架整合成为当前的Django 基础架构? 本书讲述如何利用Django 强大的“自支持”功......一起来看看 《轻量级Django》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具