内容简介:说到在Linux系统上后台运行任务,可能很多人的第一反应是01
说到在 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, 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完成。 |
在看点这里
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
释放潜能:平台型组织的进化路线图
穆胜 / 人民邮电出版社 / 2017-12 / 59.80元
传统的组织模式中,企业逃不出“员工动不起来”和“创新乏力”的宿命。互联网改变商业逻辑的同时也改变了组织逻辑。平台型组织是匹配互联网商业逻辑的组织模式,它赋予了基层员工更多的责权利,能够在需求侧灵敏获取用户刚需、在供给侧灵活整合各类资源、用“分好钱”的机制激活个体去整合各类资源满足用户刚需,形 成供需之间的高效连接。 打造平台型组织有两大主题:一是通过设计精巧的激励机制让每个人都能感受到市场的压力,......一起来看看 《释放潜能:平台型组织的进化路线图》 这本书的介绍吧!