&、nohup与screen的区别

本文介绍在Linux环境下如何区分并管理前台与后台进程,包括使用nohup命令使程序无视终端关闭信号继续运行的方法,以及利用screen工具同时管理多个后台任务。

&

首先,linux进程是区分前台进程和后台进程的。 
通常,在终端输入的命令执行的前台进程模式。如果一个命令要执行好久,就会阻塞住终端好久,不能进行其他工作,所以,我们可以把执行花费时间很长的任务使用后台进程模式运行,我们就可以在同一终端干其他事!、

以前台进程模式运行

通常使用的方式

[root@localhost cdnjs]# find / -name xml &
  • 1

以后台进程模式运行

[root@localhost cdnjs]# find / -name xml &
  • 1

这样,这个查找程序就会在后台运行。它运行的同时不影响你干别的事情。 
在后台运行时,找到符合的文件,还是会在终端中输出。

查看后台任务

[root@localhost cdnjs]# jobs
[1]+  已停止               find / -name xml
  • 1
  • 2

切换前台/后台模式

前台切后台

在运行命令后,有的时候忘记了在命令之后加上‘&’符号,又不愿意停下此命令重新改写。这是可以按[ctrl+z],把当前程序切入后台。 
但是要注意此时在后台的这个程序是处于 Stopped 状态 
要继续执行的话,先使用jobs命令找出当前任务的jobId,然后按如下操作

[root@localhost cdnjs]#bg 1
  • 1
后台切回前台

先使用jobs命令找出当前任务的jobId,然后按如下操作

[root@localhost cdnjs]#fg 1
  • 1

nohup

不管是前台进程还是后台进程,在终端关闭的时候,linux会发出终端关闭信号,让在终端中运行的进程结束。 
但是,我们可能会有这样的需求: 
在linux进行下载很久的任务,但是终端关闭的时候,我们是不希望下载被终止的。所以,可以采用nohup命令的方式,让程序运行的时候,忽略掉终端关闭的信号。 
格式为:

nohup 执行程序的命令
  • 1

tip

如果想让一个程序在后台运行,只要在执行命令的末尾加上一个&符号就可以了。但是这种方式不是很保险,有些程序当你登出终端后它就会停止。那么如何让一个程序真正永远在后台执行呢。答案就是使用 nohup和&组合使用 
格式为:

nohup 执行程序的命令 &
  • 1

screen

nohup和&的缺点是,如果你要在一个shell会话里面执行多个命令和脚本,那么要每个命令和脚本都要加nohup和&非常麻烦,所以才有了screen。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值