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在缺省状态下会将原本输出到控制台的stdout和stderr重定向至执行目录下的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

 

比起nohup,screen要复杂的多,我们先来看一下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的难度恐怕也不遑多让。进入screen窗口后,虽然感觉是操作与普通终端无异,但是screen本身也有许多快捷键,而这些快捷键都需要搭配Ctrl+a。

ctrl a ctrl a,  最近使用的两个窗口之间切换ctrl a + 数字,  切换到某个窗口ctrl a + d,     detachctrl 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

 

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值